當你在 Vim 中打開一個文本想要搜尋一個特定的字元時,如果此時你處于插入模式中,那麼第一步你要先按下 Esc /
鍵從編輯模式中退出。之後輸入
+ 你要搜尋的單詞。
例如,如果你想要搜尋的單詞是
linux
,如下圖顯示的就是在 Vim 視窗底部的搜尋指令: 
回車之後,你會看到 Vim 會将光标停留之後第一個找到的包含此單詞的位置。如果你剛剛打開一個檔案并且立即開始了搜尋操作,搜尋将從檔案的首行開始。
如果想要移動到下一處包含被搜尋單詞位置,按
n
鍵。當你周遊完所有被搜尋模闆所在之處,繼續按 n
鍵 Vim 将重複搜尋操作,光标将回到第一次搜尋結果出現位置。 N
(即 shift
+ n
)。同時,
值得注意的是不管在什麼時候,你都可以輸入
ggn
來跳轉到第一個比對處,
或者
GN
來跳轉到最後一處。
如果你此時在檔案的底部,想要進行逆向搜尋的情況下,使用
?
代替 /
來開始搜尋。下圖是一個例子: 1、 高亮搜尋結果
前面我們提到可以通過n或者N進行搜尋單詞的跳轉,但是如果檔案中有多個被搜尋關鍵詞,這樣顯得不是很友善,如果能将搜尋結果高亮顯示,是不是會更好呢?例如,請看下圖:
這可以通過設定
hlsearch
變量來實作,例如在普通/指令行模式中執行下述指令:
:set hlsearch
2、搜尋不區分大小寫
在 Vim 中進行搜尋預設是區分大小寫的。如果某個字元是由大小寫混合而成,搜尋時能忽略大小寫會友善我們的操作。可以使用如下指令來使搜尋變得不區分大小寫:
:set ignorecase
是以當設定
ignorecase
變量後再使用前邊提到的指令,搜尋
linux
,那麼
Linux
所在處也會被高亮。
3、智能大小寫搜尋
Vim 提供了一個功能,隻有當要搜尋的單詞 / 模闆包含大寫字母時,編輯器才會區分大小寫。要想實作這種功能,必須先設定
ignorecase
,再接着設定
smartcase
變量。
:set smartcase
例如,如果一個檔案中既包含
LINUX
也包含
linux
,在開啟智能大小寫搜尋功能時,如果使用
/LINUX
進行搜尋,隻有單詞
LINUX
處會被搜到。反之,如果搜尋
/linux
,那麼不論大小寫的搜尋結果都會被比對。
4、遞進搜尋(循環搜尋)
就像百度搜尋一樣,随着你輸入查詢字串(字串随你每輸入一個字元不斷更新)顯示不同的搜尋結果,Vim 也提供了同樣的遞進搜尋。要想使用這種特性,你隻需要在搜尋前執行下述指令:
:set incsearch
一些很酷的在 Vim 中搜尋的小技巧
你可能會發現還有一些其他的與搜尋相關的小技巧很有用。
如果你想要搜尋一個檔案中的一個單詞,但是又懶得一個一個字元輸入,你隻需要将你的光标移到這個單詞下然後按
*
。
如果你想要啟動一次部分搜尋(例如:同時搜尋
and
和
in
),那你需要将光标移到到單詞(在本例中, and)下,然後通過在鍵盤上按
g*
(按一次
g
然後不斷按
*
)。
注意:如果你想要逆向搜尋,按
#
g#
這裡有個視訊可以看一下:
在開始搜尋後通過按
[I
,來實作獲得所有被搜尋單詞或模式比對處所在的行和行号的一個清單
如下圖是一個清單結果如何在 Vim 視窗底部被分組和顯示的例子:
前面提到用n/N 進行搜尋時,Vim 預設是循環搜尋的,就是說你搜尋到文末之後繼續搜尋将重新從頭開始搜尋。如果不想這樣無限循環下去,隻想搜尋到文末就可以結束,可以使用如下指令:
:set nowrapscan
使用如下指令 可重新打開循環搜尋:
:set wrapscan
如果想要獲得更多小技巧(包括如何使用滑鼠來使在 Vim 中的操作變得簡單),可查閱Vim 官方文檔。
結語
vim的操作有很多種,大家也沒必要死記硬背。在實踐中經常使用自然會熟能生巧。後續還會更新其他的一些操作技巧。歡迎關注~
原文釋出時間為:2018-10-17
本文作者:
程式員共成長本文來自雲栖社群合作夥伴“
”,了解相關資訊可以關注“
”。