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 提供了灵活且高效的解决方案。本文将从基础到进阶,结合具体场景,系统讲解如何通过 Vim 删除命令提升编码效率,并通过实际案例帮助读者快速上手。
基础删除命令:从单字符到整行的精准操作
在 Vim 的普通模式(Normal Mode)中,删除操作的核心命令是 d
(delete)。通过与方向键、数字或动作命令(如 w
、$
)的组合,可以实现不同粒度的删除。以下分场景详解:
1. 删除单字符与光标移动
x
命令:删除光标所在位置的字符,是 Vim 删除的基础操作。例如,在单词 "hello" 的首字母h
处按下x
,会直接删除h
,光标保持不动。X
命令(大写):删除光标左侧的字符,适合回退修改。例如,在 "world" 的r
处按下X
,会删除左侧的o
,光标左移一位。
2. 删除单词与行内文本
dw
:删除光标所在单词及后续空白字符。例如,若光标在 "this is a test" 的t
处,dw
会删除 "this "(包括空格)。d$
:删除从光标到行尾的所有字符。假设当前行是print("Hello World")
,若光标在("H
处,d$
将删除ello World")
,结果变为print(
。d0
:与d$
相反,删除从光标到行首的字符。例如,在let x = 10
的x
处执行d0
,会删除let
,仅保留x = 10
。
3. 删除整行与多行
dd
:删除当前整行,是 Vim 删除中使用频率最高的命令之一。例如,在代码行def function():
上执行dd
,该行会被移至默认寄存器(剪贴板),同时光标上移一行。3dd
:删除光标下方的三行(包括当前行)。若光标在第 5 行,执行后将删除第 5、6、7 行。dG
:删除从光标到文件末尾的所有内容。适用于快速清理冗余代码块。
可视模式:图形化选区的高效删除
Vim 的可视模式(Visual Mode)允许用户像图形界面一样“框选”文本,再通过 d
命令批量删除,尤其适合处理复杂文本块:
1. 可视字符模式(Visual Mode)
按下 v
进入可视模式,通过方向键或动作命令选择文本区域。例如:
v$
:选中当前行到行尾的文本,随后按d
删除。v
+j
:向下扩展选区至下一行,适合删除多行代码。
案例:删除多行注释
假设代码中有:
print("Code")
将光标置于第一个 #
,输入 vjj
(选中三行),再按 d
,即可一次性删除所有注释。
2. 可视行模式(Visual Line Mode)
按 V
进入行模式,可快速选中整行。例如:
5V
:选中当前行及下方 4 行,随后d
删除。V
+}
:选中当前段落(由空行分隔的代码块),适合清理冗余段落。
3. 可视块模式(Visual Block Mode)
按 Ctrl+v
进入块模式,可垂直选中矩形区域。例如:
在以下代码中,若需删除列 5 到列 8 的内容:
hello 123
world 456
test 789
将光标置于 h
,输入 Ctrl+v
后按 l4
(右移 4 列)和 2j
(下移 2 行),形成矩形选区,再按 d
即可删除数字列。
进阶技巧:寄存器、组合命令与撤销
1. 利用寄存器控制删除内容
Vim 的寄存器(register)可临时存储删除或复制的文本。默认删除内容会进入 "
(双引号)寄存器,但可通过以下方式灵活管理:
"_d
:将删除内容丢弃至“黑洞寄存器”,避免覆盖剪贴板。例如,清理测试代码时使用此命令可避免误粘贴。"ad
:将删除内容存入自定义寄存器a
,后续可用"ap
粘贴。
2. 组合命令:动作与删除的高效配合
d+动作
:直接组合删除与动作命令。例如:d}
:删除光标到当前段落结束的文本。dG
:删除至文件末尾(如前文所述)。
.
命令:重复上一次删除操作,适合批量处理相同模式。例如连续删除多个注释行时,只需执行一次后多次按.
。
3. 撤销与重做
u
:撤销上一次操作,包括删除。Ctrl+r
:重做被撤销的操作。U
:恢复当前行至进入普通模式时的状态,适合误删整行后快速恢复。
实战案例:复杂场景下的 vim 删除应用
案例 1:删除特定行并保留内容
假设需删除文件中所有以 #
开头的注释行,同时保留其内容至寄存器:
- 使用
:g/^#/d
命令删除所有匹配行(全局搜索以#
开头的行并删除)。 - 若需保留,改用
:g/^#/d A
(存入寄存器A
)。
案例 2:替换操作中的删除
若需将 print("Hello")
改为 print("World")
:
- 移动光标到
Hello
,输入cw World
(替换命令),但也可通过删除实现:d3w
删除Hello
及后续空格,再输入World
。
案例 3:删除并保留多行代码
在编辑 JavaScript 时,需删除一段函数但保留其内容:
// Old Function
function oldFunc() {
// ...
}
步骤:
- 进入可视行模式(
V
),选中oldFunc
的全部代码。 - 按
"ad
删除并存入寄存器a
,后续可通过"ap
粘贴恢复。
结论
掌握 Vim 删除操作的核心,是理解命令的组合逻辑与模式切换的灵活性。从基础的单字符删除到复杂文本块的寄存器管理,Vim 通过其简洁的命令系统,将删除转化为高效编辑的跳板。对于初学者,建议从 dd
、dw
等高频命令入手,逐步探索可视模式与寄存器的进阶用法;中级开发者则可结合宏(macro)与正则表达式,进一步提升批量删除的自动化程度。记住,实践是精通的唯一路径——通过日常编码中刻意练习这些技巧,你将逐步解锁 Vim 的真正潜力,让“删除”成为优化代码、提升效率的利器。