在Vim正则表达式中,我知道可以使用
以foo
开头的所有行上的bar
替换%
:g/^%/s/foo/bar/g
但我想在foo
以bar
开头的所有行上将%
替换为{{1}}。有没有办法轻松这样做?
答案 0 :(得分:10)
尝试:vglobal
:
:v/^%/s/foo/bar/g
答案 1 :(得分:6)
您可以使用%
否定character class
字符: -
:g/^[^%]/s/foo/bar/g
[^%]
匹配除%
之外的任何字符,位于字符串的开头。
答案 2 :(得分:5)
:g
的倒数为:g!
,因此可以表达您的示例:
:g!/^%/s/foo/bar/g
请注意,:g!
只是撰写:v
的另一种方式(参见Jim Davis的回答)
答案 3 :(得分:3)
尝试:g/^[^%]/s/foo/bar/g
以匹配所有不以%