:%s/foo/bar/g
这个vim命令为我节省了很多时间。但是今天我不小心输入了
:%s/foo/bar
没有全局(g)结尾,无论如何都有效!我很困惑。发生了什么事?是否更好地使用/g
以及为什么?
答案 0 :(得分:2)
即使您没有指定/ g它也能正常工作,但它只替换第一次出现的匹配而不是文件中的第二次和连续出现。
答案 1 :(得分:2)
%s/foo/bar/g
为每一行运行s/foo/bar/g
。这将foo
替换bar
的所有实例。
%s/foo/bar
为每一行运行s/foo/bar
。这会将foo
的第一个实例替换为bar
。
假设您的文件包含
foo foo foo
foo foo foo
foo foo foo
然后%s/foo/bar/g
将其变为
bar bar bar
bar bar bar
bar bar bar
但%s/foo/bar
将其变为
bar foo foo
bar foo foo
bar foo foo