2012-05-02 196 views

回答

16

這是Perl語法,而不是Vim。在Vim正則表達式中,至少默認情況下,括號匹配自身,反斜槓括號捕獲 - 與Perl相反。此外,Vim不會理解非貪婪修改?,並且捕獲組與\ñ,不$ñ插值。試試這個:

%s/hello(\([^)]*\))/hello[\1]/ 

或者,你可以使用\v(「非常神奇」)修改作出關於特殊字符和反斜槓更多類似Perl的行爲,雖然它並不要使Vim理解*?或改變其插語法:

%s/\vhello\(([^)]*)\)/hello[\1]/ 

另外請注意,您不需要在方括號中替換文本反斜槓 - 一個替換命令的右手邊是正則表達式,所以你不要不必擔心大部分人物在一個特別的。幾乎只有反斜槓本身是特殊的,並且可以用來包含捕獲組或它自己的文字實例或分隔符。