2015-07-22 36 views
0

所以我有一個行包含以下代碼:如何在Vim中編寫這個替換?

eq(["JetFuelBird", "JetFuelBet", "JetFuelComputer", "JetFuelDog", "JetFuelElephant"]) 

我想交換的每個詞與結束詞噴氣機燃料開頭,所以我有類似EQ [「BirdJetFuel」,「BetJetFuel」。 ...等]

我想是這樣的:。

:24s/.*(JetFuel)(\w)"/.*\1JetFuel/g 

,其中24是行號,並得到未發現一個模式錯誤......我怎麼寫這個?這看起來應該很簡單。

回答

4
:24s/JetFuel\(\w\+\)/\1JetFuel/g 

Vim通常使用舊式的正則表達式,這裏的許多「特殊字符」中還沒有特殊,所以當他們變得特殊,他們需要進行轉義。現在我們習慣於正則表達式,所有特殊字符都是默認的特殊字符,當我們希望它們不是特殊的時候,我們會將它們轉義出來。你也可以用 「非常神奇」 開關(\v),這使得正則表達式有點更現代:

:24s/\vJetFuel(\w+)/\1JetFuel/g 
+0

甚至':24S/\ V(噴氣機燃料)(\ w +)/ \ 2 \ 1/g'或':24s/\ v(Je \ S + el)(\ w +)/ \ 2 \ 1/g' – Steve