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

📅 2026/6/29 20:48:54
vi 删除指定范围的行,不用再反复按 dd
目前各种强大的现代编辑工具可能已经让很多人忘了vi的用法但笔者最近在配合调试客户环境的代码时就遇到经常要直接在那黑乎乎的putty窗口下直接使用vi来操作反复去删除指定多行代码的场景很是痛苦加上远程网络时而还会不稳连续的dd很不方便且容易误操作。所以就倒逼自己回来复习了下vi删除行的快捷操作。在 vi 里删除多行内容时很多人会下意识连续按dd或者先算清楚要删多少行用d数字d。其实删除指定范围的行可以直接用行号范围完成简单很多也不用去计算和定位光标。01 | 删除指定行号范围比如要删除第 345 行到第 376 行内容不用一直按dd也不用自己计算一共多少行。直接输入:345,376d然后回车即可。如果发现删除错了按u就可以回退刚刚的整个删除操作然后继续指定正确的范围。什么你说怎么知道内容范围是多少行这样设置就可以看到每行的行号了:set nu02 | 快速定位到某一行如果想快速定位到某一行比如第 222 行可以直接输入:222回车后就会到指定行。这个配合范围删除使用会更方便。先定位再确认当前行和目标行最后执行删除命令。03 | 记住几个实用指代vi 里有几个非常实用的指代含义.代表当前行。$代表最后一行。%代表所有行。例如从当前行删除到文件末尾:.,$d从第 22 行删除到文件末尾:22,$d04 | 也可以往回删除范围删除也可以从当前行往前删比如从当前行删除到文件开头:.,1d笔者测试的环境里这种往回删除会出现提示Backwards range given, OK to swap (y/n)?确认没错的话输入y回车即可。05 | 删除所有行笔者之前习惯用d10000d前提是确认 10000 大于文件行数其实大于也没关系数字搞更大或者多执行几次。但实际上想删除所有行可以直接使用%:%d然后按 Enter 键即可删除所有行。也可以写成:1,$d效果一样看个人习惯或者看自己更容易记住哪个。