32

と という単語redを含むテキストがあるとしblueます。

単語を含むすべての行でのみblue単語の出現箇所を単語に置き換えるにはどうすればよいですか?greenred

同様に、単語を含まないすべての行blueをどのように置き換えることができますか?greenred

4

2 に答える 2

57

「赤」を含む行で「青」を「緑」に置き換えるには:

:g/red/s/blue/green

「red」を含まない行で置換を行うには:

:g!/red/s/blue/green
于 2012-08-17T17:26:55.113 に答える
5

パターンマッチ アドレスを使用する

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」がある行は変更されないことに注意してください。

于 2012-08-17T17:35:47.457 に答える