Vim:ファイル全体の空白行を削除する方法

lines Vim Tips

ファイル全体の空白行を削除する方法

以下のglobalコマンドを実行します。

:g/^$/d

ヘルプでglobalコマンドの書式は以下のように説明されています。

:[range]global/{pattern}/{command}

[range] は範囲指定で省略した場合はファイル全体に適用されます。

global は に省略可能です。

{pattern} は検索パターンで ^$ は空白行を意味します。

{command} はExコマンド(は delete の省略で削除するコマンド)を指定します。

範囲を指定して空白行を削除する方法

例えば、2から5行目の空白行を削除する場合は以下のように範囲を指定してコマンドを実行します。

:2,5g/^$/d

vglobal, global!を使用する方法

vglobal, global! を使用するとglobalコマンドの挙動を反転できます。つまり検索パターンにマッチしない各行について {command} を実行できます。

ファイル全体の空白行を削除するには検索パターンに .(任意の一文字。挙動が反転するので空白行が対象)を指定して以下のコマンドを実行します。

:v/./d

または

:g!/./d

ただし、この方法の場合は削除後の行が検索パターンにマッチするのでハイライトされます。