vim 删除所有(长文讲解)
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;演示链接: http://116.62.199.48:7070 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观
在编程和文本编辑的日常工作中,高效地删除不需要的内容是一项关键技能。无论是清理代码中的冗余注释、修复格式混乱的文件,还是批量处理数据,掌握 Vim 的删除操作都能显著提升工作效率。本文将从基础命令到高级技巧,系统讲解如何在 Vim 中实现“删除所有”场景的需求,帮助编程初学者和中级开发者快速掌握这一实用技能。
基础删除命令:快速上手
Vim 的删除操作以简洁的命令为核心,通过组合键和模式切换实现精准控制。对于编程初学者,建议从基础命令入手,逐步构建对删除操作的理解。
1. 单字符删除:x
和 X
x
:删除光标所在字符,并向右移动一位。X
(大写):删除光标左侧的字符,相当于向左删除。
示例:
输入:Hello World
将光标置于第二个 `l`(位置为 `Hell|o World`),输入 `x` 后,文本变为 `Helo World`。
2. 行级删除:dd
和 d$
dd
:删除当前整行,并复制到剪贴板。d$
:从光标位置删除到行尾。
场景比喻:
想象你正在整理杂乱的厨房,dd
相当于直接扔掉一整块食材,而 d$
是从当前切菜位置切到菜的末端。
示例:
输入:print("Hello Vim") # 注释
将光标置于行首,输入 `dd` 可直接删除整行。
若光标在 `print(` 后,输入 `d$` 则删除 `("Hello Vim")` 部分。
3. 区间删除:d{motion}
通过组合删除命令 d
与移动命令(如 w
、G
),可实现自定义范围的删除:
d2j
:删除当前行及下方两行。dG
:从光标位置删除到文件末尾。
案例:
输入多行代码时,若需删除第 5 到第 10 行:
- 光标移动到第 5 行,输入 `d10G`(删除到第 10 行)。
块删除与选择模式:精准操作多列数据
当需要删除多行或多列中的特定内容时,Vim 的块选择模式(Blockwise Visual Mode)和可视模式(Visual Mode)能高效完成任务。
1. 块选择删除:Ctrl+v
+ 删除命令
通过 Ctrl+v
进入块选择模式,可垂直选择矩形区域,再结合 d
删除选中的块。
步骤演示:
输入:
name age
Alice 25
Bob 30
Charlie 35
若需删除所有第二列前的空格:
1. 将光标置于第一行 `name` 后的空格处。
2. 按 `Ctrl+v` 进入块模式,向下移动光标选择所有空格列。
3. 输入 `d` 删除选中的空格。
2. 可视行模式:删除多行
通过 V
(大写)进入行选择模式,选择多行后输入 d
删除:
输入多行代码后,按 `V` 向下移动选择行,再输入 `d` 即可批量删除。
全局替换与正则表达式:删除所有匹配项
当需要删除文件中所有符合特定模式的内容时(如注释、特定字符串),Vim 的替换命令和正则表达式功能是关键工具。
1. 全局替换命令::%s/.../.../g
通过 :%s/pattern/replacement/g
可替换或删除所有匹配项。若需删除,可将替换内容设为空:
删除所有以 `#` 开头的注释:
:%s/^\s*#.*//g
删除所有行末的 `;`:
:%s/;$//g
2. 正则表达式进阶:复杂模式匹配
结合正则表达式,可实现更复杂的删除需求:
- 删除所有以
test_
开头的变量::%s/\btest_\w*\b//g
- 删除所有空行:
:g/^\s*$/d
撤销与重做:安全操作的保障
在进行大规模删除前,建议先熟悉 撤销(Undo) 和 重做(Redo) 命令,避免误操作导致数据丢失:
u
:撤销上一步操作。Ctrl+r
:重做被撤销的操作。
示例场景:
删除整段代码后发现错误:
- 输入 `u` 撤销删除,再逐步检查是否需要重新操作。
高级技巧:组合命令与宏录制
对于重复性删除任务,可利用宏(Macro)或组合命令提升效率。
1. 宏录制:q{register}
录制一系列操作后,通过宏重复执行:
假设需删除每行末尾的 `TODO` 标记:
1. 光标移动到首行末尾,输入 `q a` 开始录制。
2. 输入 `$Ftd`(移动到 `TODO` 后删除)。
3. 按 `q` 结束录制,再输入 `10@a` 重复执行 10 次。
2. 结合 :global
命令
通过 :g/pattern/d
删除所有匹配行:
删除所有包含 `error` 的行:
:g/error/d
实战案例:清理日志文件
假设有一个包含错误信息的日志文件,需删除所有以 [ERROR]
开头的行:
1. 打开文件:`vim log.txt`
2. 输入 `:g/^\[ERROR\]/d`(注意转义方括号)。
3. 按 `:wq` 保存退出。
结论
掌握 Vim 的删除操作,不仅能提升文本编辑效率,还能培养对编辑器底层逻辑的理解。从基础命令到正则表达式、宏录制,每个技巧都像一把钥匙,帮助开发者在复杂场景中快速找到解决方案。建议读者通过实际练习巩固操作,例如:
- 删除代码中的所有调试
print
语句。 - 清理 CSV 文件中的多余空列。
- 使用
:global
删除日志中的冗余信息。
Vim 的强大之处在于其灵活性与扩展性,而“删除所有”的目标,正是通过合理组合命令与模式,让编辑过程从繁琐走向优雅。