本文介紹如何使用vim的搜尋模式。
vim中使用 \< 和 \> 分別表示單詞的開頭和結尾,例如查詢單詞 i 而不是字母 i ,在正常模式下,按下 / 啟動搜尋模式,輸入 \,敲擊回車即可。
要查詢當前游標覆蓋的單詞,敲擊 * ,vim會自動啟動搜尋模式,游標移動到該單詞下乙個現身位置。
有時你可能會連續重複輸入同乙個單詞而不自知,例如以下文字:
1hello hello
2world world
3thank
4 thank
搜尋模式:
\(\<\w\+\>\)\_s*\1
以上搜尋模式會匹配文字中的1-4行。在vim中,使用 \( 和 \) 包括的部分視為乙個原子,其中 \(\<\w\+\>\) 匹配乙個單詞原子,\s 匹配空格符和tab符, \_s 匹配空格符、tab符和換行符, \_s* 匹配0次或多次。
使用 \| 表示或邏輯,例如 red\|green\|blue 匹配字串(注意不是單詞)red或green或blue。
如果要將匹配的物件替換成新的字串,可以使用 :%s/搜尋正則/新字串/g,例如將所有的red或green字串替換為purple:
:%s/red\|green/purple/g
替換所有單詞red或green為單詞purple:
:%s/\<\(red\|green\)\>/purple/g
vim具有搜尋模式記憶,因此以上命令也可以拆解為兩步:
第一步:搜尋單詞red或green:
/\<\(red\|green\)\>
第二步:將搜尋結果替換為purple:
:%s//purple/g
替換命令中搜尋正則為空時,vim會直接使用最後一次使用過的搜尋正則作為預設表示式。
有時我們並不想替換結果,而是想要對結果做一些裝點,那麼可以使用 & 來引用搜尋結果,例如以下示例會將文字中所有的單詞red或green新增上引號:
:%s/\<\(red\|green\)\>/"&"/g
或者使用分組 \1, \2, \3 ... 來引用搜尋結果:
:%s/\<\(red\|green\)\>/"\1"/g
:substitute 命令搜尋乙個字串並將其替換為新字串,以下為一些基本使用方法。
:%s/foo/bar/g全文搜尋每個foo並替換為bar。
:s/foo/bar/g
當前行搜尋每個foo並替換為bar。
:%s/foo/bar/gc
全文搜尋每個foo並替換為bar,替換前需要確認。
:%s/\/bar/gc
全文搜尋每個單詞foo並替換為bar,替換前需要確認。
:%s/foo/bar/gci
全文搜尋每個foo並替換為bar,替換前需要確認,大小寫不敏感。
:%s/foo/bar/gci
全文搜尋每個foo並替換為bar,替換前需要確認,大小寫敏感。
標記g:表示全域性搜尋,對每乙個匹配結果進行操作,預設標記g,則只對第乙個匹配結果進行操作。
標記c:表示操作前需要進行確認。
標記i:表示大小寫不敏感。
標記i:表示大小寫敏感。
使用 \( 和 \) 包圍住表示式使其成為乙個原子,並根據原子所處位置順序使用\1,\2,……來引用相應的匹配結果。最常見的場景莫過於對調字串位置,例如:
原文:1. france vs germany
命令::s/\(france\)\(\svs\s\)\(germany\)/\3\2\1
結果:1. germany vs france
使用 \& 表示與邏輯,例如搜尋同時包含了 red 和 blue 的行。進行與邏輯搜尋時,vim按照由 \& 分隔的表示式順序逐一匹配,因此如果開啟了高亮匹配結果的功能,那麼你看到高亮匹配的永遠都是最後乙個表示式的匹配結果。
/.*red\&.*blue
使用 \(expression1\)\@<=expression2 表示反向肯定預查搜尋模式,其過程為首先搜尋 \@<= 右側的原子即 expression2,遇到匹配項後再檢查匹配結果左側是否滿足 expression1。例如以下命令會搜尋多個冗餘0的數字。
原文:1.0 1.000 1.0100命令:
\(\.\d\+\)\@<=0\+\>
結果:匹配了1.000後兩個0,1.0100後兩個0。
參考一參考二
參考三
vim 正規表示式
vim正規表示式 vim中的正規表示式功能很強大,如果能自由運用,則可以完成很多難以想象的操作。如果你比較熟悉perl的正規表示式,可以直接參照 與perl正規表示式的區別 一節。使用正規表示式的命令 使用正規表示式的命令最常見的就是 搜尋 命令。其格式如下 正規表示式 另乙個很有用的命令就是 s ...
vim正規表示式
元字元 說明 匹配任意乙個字元 abc 匹配方括號中的任意乙個字元。可以使用 表示字元範圍,如 a z0 9 匹配小寫字母和阿拉伯數字。abc 在方括號內開頭使用 符號,表示匹配除方括號中字元之外的任意字元。d 匹配阿拉伯數字,等同於 0 9 d 匹配阿拉伯數字之外的任意字元,等同於 0 9 x 匹...
Vim正規表示式
vim中的正規表示式功能很強大,如果能自由運用,則可以完成很多難以想象的操作。如果你比較熟悉perl的正規表示式,可以直接參照與perl正規表示式的區別 一節。使用正規表示式的命令最常見的就是 搜尋 命令。其格式如下 正規表示式另乙個很有用的命令就是 s 替換 命令,將第乙個 之間的正規表示式替換成...