介紹 Vim 文字編輯器的各種關鍵字搜尋方法,並提供常用範例。
基本文字搜尋
在 Vim 編輯器中若要搜尋檔案中的關鍵字,可以使用 /
(向後搜尋)或 ?
(向前搜尋),例如向後搜尋 GNU
這個關鍵字:
/GNU

GNU
向前搜尋 GNU
這個關鍵字:
?GNU

GNU
在使用 /
或 ?
進行搜尋時,如果在檔案中有多個符合搜尋條件的地方,可以使用 n
(顯示下一個符合的位置)或 N
(顯示上一個符合的位置)來瀏覽所有符合搜尋條件的位置。
正規表示法搜尋
在搜尋的時候也可以使用正規表示法(regular expression),例如使用正規表示法向後搜尋數字(d
):
/d

以下是 Vim 中常用的正規表示法語法與範例:
語法 | 說明 | 範例 |
---|---|---|
* | 出現 0 次以上 | ab* 可匹配 a 、ab 、abb 等 |
+ | 出現 1 次以上 | ab+ 可匹配 ab 、abb 、abbb 等 |
= | 剛好出現 0 次或 1 次 | ab= 可匹配 a 或 ab |
{n} | 出現剛好 n 次 | ab{3} 可匹配 abbb |
{n,m} | 出現 n 次以上、不超過 m 次 | ab{2,4} 可匹配 abb 、abbb 、abbbb |
{n,} | 出現 n 次以上 | ab{2,} 可匹配 abb 、abbb 、abbbb 等 |
{,m} | 出現不超過 m 次 | ab{,3} 可匹配 a 、ab 、abb 、abbb |
[...] | 匹配中括號中任一字元 | [ab] 可匹配 a 或 b |
[^...] | 匹配任一中括號中以外的字元 | [^ab] 可匹配 a 或 b 以外的任意字元 |
^ | 匹配行首 | ^ab 可匹配出現在行首的 ab |
$ | 匹配行尾 | ab$ 可匹配出現在行尾的 ab |
< | 匹配字首 | <ab 可匹配 ab 開頭的字 |
> | 匹配字尾 | ab> 可匹配 ab 結尾的字 |
以下是一些中介字元(metacharacter):
語法 | 說明 |
---|---|
s | 匹配空白字元(space 與 tab) |
S | 匹配非空白字元 |
d | 匹配數字(等同 [0-9] ) |
D | 匹配非數字(等同 [^0-9] ) |
w | 匹配一般字元(等同 [0-9a-zA-Z_] ) |
W | 匹配非一般字元(等同 [^0-9a-zA-Z_] ) |
a | 匹配英文字母(等同 [a-zA-Z] ) |
A | 匹配非英文字母(等同 [^a-zA-Z] ) |
l | 匹配小寫字母(等同 [a-z] ) |
L | 匹配非小寫字母(等同 [^a-z] ) |
u | 匹配大寫字母(等同 [A-Z] ) |
U | 匹配非大寫字母(等同 [^A-Z] ) |
搜尋目前單字
如果想要直接搜尋編輯器中游標所在位置上的字(word),可以直接按下 *
(向後搜尋)或 #
(向前搜尋),這樣 Vim 就會以游標所在的字作為關鍵字進行搜尋,不必用鍵盤輸入文字內容。
使用 *
或 #
進行搜尋時,同樣可以搭配 n
或 N
來瀏覽所有符合搜尋條件的位置。
搜尋複製的文字
如果不想以鍵盤輸入搜尋的文字,也可以先將文字以 v
選取之後,再以 y
複製起來,然後在按下 /
或 ?
進行搜尋時,輸入 Ctrl + r,再輸入 "
,這樣就會將剛剛複製的文字貼上去進行搜尋了。
搜尋紀錄
Vim 會自動將過去搜尋過的關鍵字在儲存在歷史記錄中,當我們按下 /
或 ?
進行搜尋時,可以透過上下鍵瀏覽過去輸入的關鍵字,選擇要使用的搜尋關鍵字之後,也可以自行修改內容。
若歷史記錄中太多資料不好瀏覽,可以先輸入關鍵字的開頭幾個字母,再透過上下鍵尋找以該字母開頭的記錄,例如若要尋找過去使用過且由 a
開頭的關鍵字,就可以在按下 /
或 ?
之後,先輸入 a
,再透過上下鍵尋找。
大小寫
若想要讓 Vim 在搜尋文字時不區分英文的大小寫(大小寫視為相同),可以設定 ignorecase
這個選項:
:set ignorecase
或是使用簡寫 ic
來設定也可以,作用等同於 ignorecase
:
:set ic
若要恢復區分英文大小寫的狀態,可以設定 noignorecase
這個選項:
:set noignorecase
或是使用簡寫 noic
來設定:
:set noic
刪除空白行
若需要將檔案中所有的空白行刪除,可以使用以下指令:
:g/^$/d
這行指令會尋找完全空的行(^$
)並將其刪除,如果一行中有包含空白字元(space 或 tab),就會被保留下來。
如果希望將只包含空白字元的行也一起刪除,可以改用:
:g/^s*$/d
發佈留言