2015-04-12 156 views
0

我需要用bar替换所有foo字。Vim在一行中替换不匹配多个匹配项

我试过:%s/foo/bar/g但问题是foo在一行中多次出现,只有每行中第一次出现匹配我必须再次运行该命令。

例如 :%s/"/'/g"undefined"只匹配第一"

我怎么能匹配所有线路都出现?

+0

你在使用neovim吗?在其中一个版本中,这实际上已经损坏。 – SkyFold

+0

不是同样的好老vim –

+0

你是否用'vim -u NONE'试过了这个默认的vim,并试过这个。如果它确实有效,那么尝试添加一些东西给你vimrc,直到你咬住它。 – SkyFold

回答

0

其实,你使用的命令应该可以工作。在这里,你有代码来创建一个文件,并在“前”模式下运行,通过你的Vim命令:

$ cat <<EOF> /tmp/sample.txt 
> foo baz foo 
> foo foo baz baz foo 
> baz baz foo baz foo 
> EOF 

$ ex /tmp/sample.txt << EOFEX 
> :%s/foo/bar/g 
> :x 
> EOFEX 

$ cat /tmp/sample.txt 
bar baz bar 
bar bar baz baz bar 
baz baz bar baz bar 

“富”的所有事件已经在所有行被取代。

+0

如果我现在在Vim中,我可以按'Q'进入ex模式并输入replace命令并退出ex模式吗? – MoreFreeze