vim エディタに 50 行あり、特定の行 (5、9、16、28) を 1 つのコマンドで削除する必要があるとします。
答え1
一度に別々の行を操作するのは扱いにくいですが、次のように実行できます。
:g/\v%5l|%9l|%16l|%28l/d
:g/.../
- パターンに一致する行に対して操作します/.../
。\v
-とても魔法の正規表現内の特殊文字のエスケープが少なくなります。%<num>l
- 行番号に一致します<num>
(つまり、%5l|%9l|...
5 行目または 9 行目などに一致します)。:d
行を削除します。
:<num>d
1 行だけの場合、または行の範囲の場合は、または:<start>,<end>d
(たとえば、:5d
5 行目の場合、または:9,16d
9 行目から 16 行目まで(両端を含む)の行の範囲の場合)を実行できます。
答え2
:5d|9d|16d|28d
4 つの単一コマンドを連続して配置する方法です。ただし、次のように逆の方が良いでしょう。
:28d|16d|9d|5d
番号を一定に保つため。
より柔軟な方法は、vimscript を使用することです。これを 1 行にまとめると次のようになります。
:for n in [28,16,9,5] | call deletebufline("%",n,n) | endfor