2015-04-12 153 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