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(たとえば、:5d5行目または:9,16d9行目から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

関連情報