假设我有一个包含单词redand的文本blue。
如何仅在包含该单词的所有行blue中用该单词替换该单词的出现?greenred
同样,我如何在所有不包含单词的行中blue替换为?greenred
要将包含“red”的行中的“blue”替换为“green”:
: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
这将告诉 Vim 仅将模式匹配应用到以 "foo" 开头的每一行,并在每个匹配行中的多个匹配上执行替换。因此,即使“bar”出现在多行,通过此调用,您最终将得到以下输出:
foo foobarbaz
bar
foo foobarbaz baz
bar baz
quux bar
请注意,仅匹配行首以“foo”开头的行,因此其他行带有“bar”的行保持不变。