2015-09-10 31 views
0

所以我在我的多行代碼使用此模式:如何使用vim regex來做這個替換?

has_many :kites, dependent: :destroy 

我想使用vim的正則表達式來進行替代,使得上述變成:

it { should have_many(:kites) } 

這是正則表達式我(注意22是代碼的行號),但我得到了'找不到的模式'。

:22s/\s.*has_many (:[a-z]*),.*/it { should have_many(\1) }/g 

爲什麼這不匹配?

回答

3

你的括號是字面上的。爲了使它們成爲一個被捕獲的分組,你需要逃避它們。

...除非你想使用Vim的「魔術」模式。見:h /magic

+0

感謝我才意識到我不是用「\」逃離他們。 – Nona

2

需要做這樣的事情用反斜槓轉義括號:

:22s/\s.*has_many \(:[a-z]*\),.*/it { should have_many(\1) }/g