【发布时间】:2018-08-04 14:05:38
【问题描述】:
:%s/foo/bar/g
这个 vim 命令为我节省了很多时间。但是今天我不小心打字了
:%s/foo/bar 没有全局 (g) 结尾,但它仍然有效!我很困惑。这是怎么回事?使用/g 更好吗?为什么?
【问题讨论】:
:%s/foo/bar/g
这个 vim 命令为我节省了很多时间。但是今天我不小心打字了
:%s/foo/bar 没有全局 (g) 结尾,但它仍然有效!我很困惑。这是怎么回事?使用/g 更好吗?为什么?
【问题讨论】:
即使您不指定 /g 它也可以工作,但它只会替换文件中第一次出现的匹配项,而不是第二次和连续出现的匹配项。
【讨论】:
/g 当然是多余的。
%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
【讨论】: