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一起成长~

相关推荐
第404号工位19 小时前
浏览器的“无痕模式”是当代最大安慰剂?我用 30 行 JS 提取硬件指纹,跨网络换代理照样精准锁定你
linux·人工智能·python
心随_风动19 小时前
Ubuntu系统安装Apache服务教程
linux·ubuntu·apache
晴天的雨.99220 小时前
【Linux】make & Makefile 核心知识点
linux·运维·服务器
Zevalin爱灰灰20 小时前
Linux入门第一部分(Ubuntu入门篇) 第三章 shell脚本入门(一)
linux·ubuntu·嵌入式
丘山望岳20 小时前
Linux基础指令入门篇
linux·运维·服务器
笨笨饿20 小时前
#143_屏幕画撕裂的问题及解决方法
linux·stm32·单片机·嵌入式硬件·mcu·lvgl·嵌入式实时数据库
小年糕是糕手20 小时前
【AI】用 Python 做一个 AI 截图检索助手:把收藏夹里的截图找回来
linux·人工智能·python·chatgpt·agent·codex·deepseek
hhhjhl20 小时前
Zod 跨端三方库仓颉适配全流程
linux·运维·ubuntu
叼烟扛炮20 小时前
Linux 学习笔记(三十二):线程控制——创建、等待与分离
linux·运维·服务器·笔记·学习·1024程序员节
夜雪一千21 小时前
Linux 权限、用户、用户组内容介绍
linux·运维·服务器