vi 删除指定范围的行,不用再反复按 dd

目前各种强大的现代编辑工具可能已经让很多人忘了vi的用法,但笔者最近在配合调试客户环境的代码时,就遇到经常要直接在那黑乎乎的putty窗口下直接使用vi来操作,反复去删除指定多行代码的场景很是痛苦,加上远程网络时而还会不稳,连续的dd很不方便且容易误操作。所以就倒逼自己回来复习了下vi删除行的快捷操作。

在 vi 里删除多行内容时,很多人会下意识连续按 dd,或者先算清楚要删多少行,用 d数字d。其实删除指定范围的行,可以直接用行号范围完成,简单很多也不用去计算和定位光标。

01 | 删除指定行号范围

比如要删除第 345 行到第 376 行内容,不用一直按 dd,也不用自己计算一共多少行。

直接输入:

vim 复制代码
:345,376d

然后回车即可。

如果发现删除错了,按:

vim 复制代码
u

就可以回退刚刚的整个删除操作,然后继续指定正确的范围。

什么?你说怎么知道内容范围是多少行?这样设置就可以看到每行的行号了:

vim 复制代码
:set nu

02 | 快速定位到某一行

如果想快速定位到某一行,比如第 222 行,可以直接输入:

vim 复制代码
:222

回车后就会到指定行。

这个配合范围删除使用,会更方便。先定位,再确认当前行和目标行,最后执行删除命令。

03 | 记住几个实用指代

vi 里有几个非常实用的指代含义:

. 代表当前行。

$ 代表最后一行。

% 代表所有行。

例如,从当前行删除到文件末尾:

vim 复制代码
:.,$d

从第 22 行删除到文件末尾:

vim 复制代码
:22,$d

04 | 也可以往回删除

范围删除也可以从当前行往前删,比如从当前行删除到文件开头:

vim 复制代码
:.,1d

笔者测试的环境里,这种往回删除会出现提示:

text 复制代码
Backwards range given, OK to swap (y/n)?

确认没错的话,输入 y 回车即可。

05 | 删除所有行

笔者之前习惯用:

vim 复制代码
d10000d

前提是确认 10000 大于文件行数,其实大于也没关系,数字搞更大,或者多执行几次。

但实际上,想删除所有行,可以直接使用 %

vim 复制代码
:%d

然后按 Enter 键即可删除所有行。

也可以写成:

vim 复制代码
:1,$d

效果一样,看个人习惯,或者看自己更容易记住哪个。

关注我,和AI一起成长~

相关推荐
用户9718356334667 小时前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪9 小时前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠1 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush41 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5201 天前
Linux 11 动态监控指令top
linux
不会C语言的男孩1 天前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
古城小栈1 天前
Unix 与 Linux 异同小叙
linux·服务器·unix
凡人叶枫1 天前
Effective C++ 条款42:了解 typename 的双重意义
java·linux·服务器·c++
2601_961875241 天前
决战申论100题2026|最新|范文
linux·容器·centos·debian·ssh·fabric·vagrant