如何删除vim编辑器中的特定行

如何删除vim编辑器中的特定行

假设我的 vim 编辑器中有 50 行,我必须在单个命令中删除特定行 (5,9,16,28)。

答案1

一次操作不同的行很不方便,但可以这样做:

:g/\v%5l|%9l|%16l|%28l/d
  • :g/.../- 根据模式匹配的线条进行操作/.../
  • \v-非常神奇,减少正则表达式中特殊字符的转义。
  • %<num>l- 匹配行号<num>(因此%5l|%9l|...匹配第 5 行或第 9 行或...。
  • :d删除行。

如果它只是一行或一系列行,您可以执行:<num>dor :<start>,<end>d(例如,:5d对于第五行,或:9,16d对于从第 9 行到第 16 行(含)的行范围。

答案2

:5d|9d|16d|28d

就是如何将四个单个命令排成一行。但最好扭转一下局面:

:28d|16d|9d|5d

保持编号不变。


更灵活的方式是使用 vimscript。压缩成一行就是:

:for n in [28,16,9,5] | call deletebufline("%",n,n) | endfor

相关内容