vim :g, :global

2023-01-01

:g, :global とは

「:global(:g)」 とは、一見、検索コマンドに見えますが、本当は、パターンにマッチした行に ex コマンドを実行するためのコマンドです。

                                        :g :global E147 E148
:[range]g[lobal]/{pattern}/[cmd]
                        [range]の範囲で{pattern}にマッチする行に対して、Exコマ
                        ンド[cmd](省略した場合 ":p")を実行する。

:[range]g[lobal]!/{pattern}/[cmd]
                        [range]の範囲で{pattern}にマッチしない行に対して、Exコ
                        マンド[cmd](省略した場合 ":p")を実行する。

                                                        :v :vglobal
:[range]v[global]/{pattern}/[cmd]
                        :g! と同じ。

:gの例

foo のある行を削除します。

:g/foo/d

foo のある行の hoge を meta に置換します。

:g/foo/%s/hoge/meta/g

空行の削除

:g/^$/d

:vglobal :v

:v は、:g の否定です。 foo のない行を削除します。

:v/foo/d

foo のない行の hoge を meta に置換します。

:v/foo/%s/hoge/meta/g