2017-07-14 45 views
4

我有以下文字:VIM重複的模式在替換命令

Lang1 
Lang2 
Lang3 

現在,我想喜歡的模式,以取代各行中的所有文本:

{ DisplayName: DispName(Lang1), Value: Lang1 }, 
{ DisplayName: DispName(Lang1), Value: Lang2 }, 
{ DisplayName: DispName(Lang1), Value: Lang3 }, 

現在怎麼辦我用vim命令替換實現了這一點,我可以得到::%s/*$/\{\ DisplayName\:\ DispName\(Lang1\)\,\ Value\:\ Lang1\}\,/,用Lang1替換每一行,然後用2,3,4等代替單個1,但我不想這樣做。我想要一個替代命令來選擇模式並重復它。如何實現這一目標?

回答

5

您可以使用:

:%s/.*/{ DisplayName: DispName(&), Value: &},/ 

這裏&是使用.*完全匹配的字符串的反向引用。如果你想更具體的,那麼你可以使用這個表達式,而不是.*

{ DisplayName: DispName(Lang1), Value: Lang1}, 
{ DisplayName: DispName(Lang2), Value: Lang2}, 
{ DisplayName: DispName(Lang3), Value: Lang3}, 

^Lang[0-9]*$ 
+1

這正是我一直在尋找這將與此內容替換給定的內容。我知道我們可以重複該模式,但無法從Google中找到它。 「&」和「back-reference」是我在谷歌查詢中丟失的條款。 –