我常常想這樣的搜索和替換在vim:Vim的搜索和替換效率
:%s/<search_pattern>/<search_pattern>_foo/g
有沒有辦法讓這個語法更有效,這樣我可以參考的替代值<search_pattern>
?我認爲這是類似於通過組名稱/號碼反向引用的內容,但我無法在此找到任何文檔。
我常常想這樣的搜索和替換在vim:Vim的搜索和替換效率
:%s/<search_pattern>/<search_pattern>_foo/g
有沒有辦法讓這個語法更有效,這樣我可以參考的替代值<search_pattern>
?我認爲這是類似於通過組名稱/號碼反向引用的內容,但我無法在此找到任何文檔。
使用&
字符來表示在更換匹配的模式:
:%s/<search_pattern>/&_foo/g
或者您可以使用\0
,這是整個匹配的模式反向引用,因此可能更容易記住:
:%s/<search_pattern>/\0_foo/g
見:help sub-replace-special
而且,由於@kev,喲u能在使用\zs
,搜索字符串的結束迫使空模式被__foo_在替換替換:
:%s/<search_pattern>\zs/_foo/g
這意味着:替換__foo_搜索字符串的結尾。
您可以對整個搜索模式使用&
,也可以使用組匹配模式的一部分。使用&
:
:%s/<search_pattern>/&_foo/g
這將完成您正在尋找的內容。如果你需要一些更復雜的使用組。要創建一個組,使用(轉義)括號來包圍部分搜索模式。然後您可以參考\n
,其中n
是組號碼。一個例子會更好地解釋它。
您有以下文件:
bread,butter,bread,bread,bread,butter,butter,etc
你想要的bread,butter
任何實例更改爲bread and butter
:
:%s/\(bread\),\(butter\)/\1 and \2/g
':%s/ \ ZS/_foo/g'作品太。 –
kev
2012-08-16 18:09:28