'vi 删除指定范围的行,不用再反复按 dd'
vi 删除指定范围的行,不用再反复按 dd#
2026-06-18 17:14 AlfredZhao 阅读(0) 评论(0) 收藏 举报
目前各种强大的现代编辑工具可能已经让很多人忘了vi的用法,但笔者最近在配合调试客户环境的代码时,就遇到经常要直接在那黑乎乎的putty窗口下直接使用vi来操作,反复去删除指定多行代码的场景很是痛苦,加上远程网络时而还会不稳,连续的dd很不方便且容易误操作。所以就倒逼自己回来复习了下vi删除行的快捷操作。
在 vi 里删除多行内容时,很多人会下意识连续按 dd,或者先算清楚要删多少行,用 d数字d。其实删除指定范围的行,可以直接用行号范围完成,简单很多也不用去计算和定位光标。
01 | 删除指定行号范围#
比如要删除第 345 行到第 376 行内容,不用一直按 dd,也不用自己计算一共多少行。
直接输入:
:class="hljs-number">345,376d然后回车即可。
如果发现删除错了,按:
u就可以回退刚刚的整个删除操作,然后继续指定正确的范围。
什么?你说怎么知道内容范围是多少行?这样设置就可以看到每行的行号了:
:set nu02 | 快速定位到某一行#
如果想快速定位到某一行,比如第 222 行,可以直接输入:
:class="hljs-number">222回车后就会到指定行。
这个配合范围删除使用,会更方便。先定位,再确认当前行和目标行,最后执行删除命令。
03 | 记住几个实用指代#
vi 里有几个非常实用的指代含义:
. 代表当前行。
$ 代表最后一行。
% 代表所有行。
例如,从当前行删除到文件末尾:
:.,$d从第 22 行删除到文件末尾:
:class="hljs-number">22,$d04 | 也可以往回删除#
范围删除也可以从当前行往前删,比如从当前行删除到文件开头:
:.,1d笔者测试的环境里,这种往回删除会出现提示:
Backwards range given, OK to swap (y/n)?确认没错的话,输入 y 回车即可。
05 | 删除所有行#
笔者之前习惯用:
d10000d前提是确认 10000 大于文件行数,其实大于也没关系,数字搞更大,或者多执行几次。
但实际上,想删除所有行,可以直接使用 %:
:%d然后按 Enter 键即可删除所有行。
也可以写成:
:class="hljs-number">1,$d效果一样,看个人习惯,或者看自己更容易记住哪个。
关注我,和AI一起成长~
AlfredZhao©版权所有「从Oracle起航,领略精彩的IT技术。」
转载请注明原文链接:https://www.cnblogs.com/jyzhao/p/20636474/vi-shan-chu-zhi-ding-fan-wei-de-xing-bu-yong-zai-f
👋 感谢阅读,欢迎关注我的公众号 「赵靖宇」

相关文章
评论