Vim 搜尋模式(正規表示式)

2022-07-05 04:27:13 字數 2312 閱讀 8247

本文介紹如何使用vim的搜尋模式。

vim中使用 \< 和 \> 分別表示單詞的開頭和結尾,例如查詢單詞 i 而不是字母 i ,在正常模式下,按下 / 啟動搜尋模式,輸入 \,敲擊回車即可。

要查詢當前游標覆蓋的單詞,敲擊 * ,vim會自動啟動搜尋模式,游標移動到該單詞下乙個現身位置。

有時你可能會連續重複輸入同乙個單詞而不自知,例如以下文字:

1

hello 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 替換 命令,將第乙個 之間的正規表示式替換成...