如何在Vim中删除多个不连续的行段?
如何在Vim中同时删除多组不连续的行段
当然有办法啦!在Vim里要同时删除像34-40行和43-45行这样不连续的行段,有几种简单又实用的方法,我给你一一说明:
方法一:用管道符
|连接多个删除命令
这是最容易上手的方式,你可以把两个删除命令用管道符|隔开,让Vim依次执行它们。不过这里要注意一个小坑:如果你先删除前面的行段(比如34-40行),后面的行号会往前偏移,原本的43-45行就会变成更小的行号,导致删除位置出错。所以建议先删后面的行段,再删前面的,命令如下::43,45d | 34,40d要是你确认删除前面的行段后,后面的目标行不会受影响(比如中间隔了很多行),也可以反过来写,但先删后面的方式更稳妥。
方法二:利用行号匹配的全局命令
如果你想一次性指定所有要删除的行段,还可以用:global命令结合Vim的行号匹配语法来实现,这个方法适合更复杂的多段删除场景::g/^\%34l\|\%43l/,/^\%40l\|\%45l/d这里的
\%nl是Vim专门用来匹配第n行的语法,这个命令会分别匹配第34行、第43行作为起始点,然后各自删除到第40行、第45行。不过对于仅两组行段的简单需求来说,第一种方法更直观。方法三:可视模式手动选择删除
要是你不习惯记命令行语法,也可以用可视模式来操作:先按V进入行可视模式,选中34-40行;接着按住Ctrl+o回到普通模式,移动光标到43行,再按V选中43-45行;最后按d键就能删除所有选中的行段了。
内容的提问来源于stack exchange,提问作者user642832
相关产品推荐
相关产品推荐

