2016-01-23 136 views
2

我有一些線。我想在這些行中搜索正則表達式,並將匹配追加到匹配行的末尾。例如,這是輸入:如何把正則表達式匹配到vim的行尾?

foo x 

這裏是預期輸出:

foo x foo 

我可以使用替代命令來實現這種轉換:

%s/\(f\w*\).*/\0 \1/ 

但我認爲這個解決方案有時難以應用或適應某些用例。我尋找一個更簡單的解決方案,使用全局命令類似於:

g/\f\w*/ s/$/ <??>/ 

我想先過濾行。然後在替代命令的每一行中使用匹配。有沒有讓我使用全局命令中的匹配代替<??>的命令?

回答

1

我不認爲你可以從另一個命令訪問匹配的文本。我認爲匹配您想要的內容比較容易,然後匹配到行尾(使用.*)並重新啓動\zs。與此類似,例如:

:%s/\v(regex).*\zs/ \1 

在此命令,重新啓動所有的線被抓獲後,本場比賽的位置,也是你想要的文字保存在\1

+0

@Mert整體我認爲這可能會有很大的不同,取決於你的正則表達式。那麼,這裏只是一個想法。 – sidyll