2014-03-28 47 views
-2

今天我遇到了這種情況,我需要更改var[name]var [name]和很多其他地方name可能是描述或其他字符串。我可以這樣做以下命令:如何使用Vim替換將var [foo]更改爲foo?

%s/var[$variable]/$variable/g 
+1

你嘗試了嗎?它有用嗎?你有一些示例輸入和輸出? (是的,這可以做,但可能不會與你寫的) – FDinoff

+0

你正在使用文字'$變量'? –

回答

1

基於問題的標題,下面的表達式應該改變var[foo]foo

:%s/\vvar\[(.{-})\]/\1/g 

但你提到你需要改變var[name]var [name]細節,下面應該這樣做:

​​3210

從意見做第二個替代的其他方式:

:%s/var\zs\ze\[.*\]/ /g 

:%s/var\zs\ze\[[^]]*\]/ /g 
+0

謝謝,第一行適用於我,所以'\ 1'是指'()'裏面有什麼匹配的,我正確嗎? – mko

+0

太棒了!是'\ 1'是指第一個捕獲組。 – Amit

+0

謹防貪婪修飾符,特別是'。*'。這個答案中的第一個命令用'foo] var [bar'替換var [foo] var [bar]',第二個命令用'var [foo] var [bar]'替換它。嘗試使用'。\ { - }'或'[^]] *'。 – benjifisher

0

相關:(g)vim replace regex

要知道,如果你已經知道正則表達式和一般拍攝的東西,在這方面,你顯然有逃避組字符,而不是相反:

%s/var[\(variable\)]/\1/g 

沒有更多的信息,我不能更有幫助。

+2

你可能想逃離角色類。否則這不是你想做的事... – FDinoff

+0

'%s/var \ [\(。* \)\]/\ 1/g'爲mw工作,謝謝 – mko

相關問題