2013-01-22 15 views
6

在Vim的正則表達式起跑線「酒吧」「富」,我知道這是可能使用bar上開始%所有線路更換foo的Vim - 取代通過不「字」

:g/^%/s/foo/bar/g 

但是我想在所有不以%開頭的行上用bar替換foo。有沒有辦法輕鬆做到這一點?

回答

6

開始你可以只否定使用character class%字符: -

:g/^[^%]/s/foo/bar/g 

[^%]匹配任何字符,除了%,在字符串的開始。

3

嘗試:g/^[^%]/s/foo/bar/g匹配的所有行不會%

10

嘗試:vglobal

:v/^%/s/foo/bar/g 
5

:g倒數是:g!,所以你的例子可以表示爲:

:g!/^%/s/foo/bar/g 

注意:g!是寫:v(參見吉姆戴維斯的另一種方式'answer)