如何刪除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

相關內容