VIM 正規表示式搜尋字串

2021-05-31 22:39:24 字數 1685 閱讀 4827

在插入模式下,為了減少重複的擊鍵輸入,vim 提供了若干快捷鍵,當你要輸入某個上下文曾經輸入過的字串時,你只要輸入開頭若干字元,使用快捷鍵,vim 將搜尋上下文,找到匹配字串,把剩下的字元補全,你就不必敲了。這樣,程式設計序時你起多長的變數名都沒關係了,:-) 而且還可以減少輸入錯誤。我認為,插入補全是 vim 最為突出的一項功能。

i向下搜尋,補全乙個詞

i補全一行。比如你寫過一行 for (int i = 0; i < 100; i++),你想再寫一模一樣的一行,只要輸入 for即可。如果補全出來的不是你想要的那一行,你可以按 或 選擇上乙個或下乙個匹配行

i在檔案系統中搜尋,補全乙個檔名

如果按 或 補全乙個詞,在當前檔案中沒有找到匹配,vim 將搜尋 #include 語句中的檔案,而檔案的位置將在 path 中搜尋。

搜尋字串用的是正規表示式(regular expression),其中許多字元都有特殊含義:

\        取消後面所跟字元的特殊含義。比如 \[vim\] 匹配字串「[vim]」

匹配其中之一。比如 [vim] 匹配字母「v」、「i」或者「m」,[a-za-z] 匹配任意字母

[^]      匹配非其中之一。比如 [^vim] 匹配除字母「v」、「i」和「m」之外的所有字元

.        匹配任意字元

*        匹配前一字元大於等於零遍。比如 vi*m 匹配「vm」、「vim」、「viim」……

\+       匹配前一字元大於等於一遍。比如 vi\+m 匹配「vim」、「viim」、「viiim」……

\?       匹配前一字元零遍或者一遍。比如 vi\?m 匹配「vm」或者「vim」

^        匹配行首。例如 /^hello 查詢出現在行首的單詞 hello

$        匹配行末。例如 /hello$ 查詢出現在行末的單詞 hello

\(\)     括住某段正規表示式

\數字    重複匹配前面某段括住的表示式。例如 \(hello\).*\1 匹配乙個開始和末尾都是「hello」,中間是任意字串的字串

對於替換字串,可以用「&」代表整個搜尋字串,或者用「\數字」代表搜尋字串中的某段括住的表示式。

舉乙個複雜的例子,把文中的所有字串「abc……xyz」替換為「xyz……abc」可以有下列寫法:

:%s/abc\(.*\)xyz/xyz\1abc/g

:%s/\(abc\)\(.*\)\(xyz\)/\3\2\1/g

其它關於正規表示式搜尋替換的更詳細準確的說明請看 :help pattern 

例如:在文字中搜尋所有包含amount大於0的以[ ] 括住的字串的行,如 「amount[123]「,  」amount[200]「 等:

首先按 :進入命令 模式,然後輸入下面的串再回車開始查詢:/amount\[[1-9]\([0-9]*\)\+\]

解釋如下:

amount  表示匹配串包含amount

\[  轉義字元,表示匹配左中括號 [

[1-9]  表示匹配一位1到9之間任何數字

\(  \)   轉義的左右括號,表示括住某段正規表示式,

\+  轉義字元+,表示前面乙個字元或乙個正則串重複1次或多次,所以,\([0-9]*\) 表示 任意個0-9之間的數字

\]   轉義字元 ] 

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

本文介紹如何使用vim的搜尋模式。vim中使用 和 分別表示單詞的開頭和結尾,例如查詢單詞 i 而不是字母 i 在正常模式下,按下 啟動搜尋模式,輸入 敲擊回車即可。要查詢當前游標覆蓋的單詞,敲擊 vim會自動啟動搜尋模式,游標移動到該單詞下乙個現身位置。有時你可能會連續重複輸入同乙個單詞而不自知,...

正規表示式匹配字串

正規表示式用於字串處理 表單驗證等場合,實用高效。現將一些常用的表示式收集於此,以備不時之需。匹配中文字元的正規表示式 u4e00 u9fa5 評注 匹配中文還真是個頭疼的事,有了這個表示式就好辦了 匹配雙位元組字元 包括漢字在內 x00 xff 評注 可以用來計算字串的長度 乙個雙位元組字元長度計...

正規表示式匹配 字串

正規表示式匹配字串 假使,有幾個需要驗證的字串用 連線在一起 形如 farmer1,1farmer234 想用正規表示式來匹配每乙個字串。private static string sourcestr farmer1,1farmer234 private static string key farm...