と という単語red
を含むテキストがあるとしblue
ます。
単語を含むすべての行でのみblue
単語の出現箇所を単語に置き換えるにはどうすればよいですか?green
red
同様に、単語を含まないすべての行blue
をどのように置き換えることができますか?green
red
「赤」を含む行で「青」を「緑」に置き換えるには:
:g/red/s/blue/green
「red」を含まない行で置換を行うには:
:g!/red/s/blue/green
sed と同様に、操作対象のアドレスにパターンを使用できます。たとえば、次のファイルがあるとします。
foo bar
bar
foo bar baz
bar baz
quux bar
次のようなコマンドを発行します。
:g/^foo/s/bar/foobarbaz/g
これにより、"foo" で始まる各行にのみパターン マッチを適用し、一致する各行内の複数の一致に対して置換を実行するよう Vim に指示します。したがって、「bar」が複数の行に表示されていても、この呼び出しで次の出力が得られます。
foo foobarbaz
bar
foo foobarbaz baz
bar baz
quux bar
行頭が「foo」で始まる行のみが一致するため、他の行に「bar」がある行は変更されないことに注意してください。