閱讀892 返回首頁    go 阿裏雲 go 技術社區[雲棲]


超酷的 Vim 搜索技巧

盡管目前我們已經涉及 Vim 的多種特性,但此編輯器的特性集如此龐大,不管我們學習多少,似乎仍然遠遠不足。承接我們的 Vim 教程係列,本文我們將討論 Vim 提供的多種搜索技術。

不過在此之前,請注意文中涉及到的所有的例子、命令、指令均是在 Ubuntu 14.04,Vim 7.4 下測試的。

Vim 中的基礎搜索操作

當你在 Vim 中打開一個文件並且想要搜索一個特定的單詞或模板,第一步你必須要先按下 Esc 鍵從插入模式中退出(如果你正處於插入模式中)。之後輸入 / 並緊接著輸入你要搜索的單詞或搜索模式。

例如,如果你想要搜索的單詞是 linux,下圖顯示的就是在 Vim 窗口底部的搜索命令:

Search for words in vim

Search for words in vim

敲擊回車鍵之後,你會看到 Vim 會將光標停留在從光標在插入模式中的位置開始,找到的包含此單詞的第一行。如果你剛剛打開一個文件並且立即開始了搜索操作,搜索將從文件的首行開始。

如果想要移動到下一處包含被搜索單詞位置,按 n 鍵。當你遍曆完所有被搜索模板所在之處,繼續按 n 鍵 Vim 將重複搜索操作,光標將回到第一次搜索結果出現位置。

Move to next search hit

Move to next search hit

在遍曆搜索結果時,如果你想要回到上一匹配處,按 N (即 shift + n)。同時,值得注意的是不管在什麼時候,你都可以輸入 ggn 來跳轉到第一個匹配處,或者 GN 來跳轉到最後一處。

當你恰好在文件的底部,而且想要逆向搜索的情況下,使用 ? 代替 / 來開始搜索。下圖是一個例子:

search backwards

search backwards

自定義你的搜索

1、 高亮搜索結果

盡管通過 n 或 N 從被搜索單詞或模式的匹配處跳轉到另一處很簡單,但是如果匹配處能夠高亮就更加人性化了。例如,請看下附截圖:

Search Highlighting in VIM

Search Highlighting in VIM

這可以通過設置 hlsearch 變量來實現,例如在普通/命令行模式中執行下述命令:


  1. :set hlsearch

set hlsearch

set hlsearch

2、使搜索不區分大小寫

在 Vim 中進行搜索默認是區分大小寫的。這就意味著如果我要搜索 linux,那麼 Linux 是不會匹配的。然而,如果這不是你想要的搜索方式,你可以使用如下命令來使搜索變得不區分大小寫:


  1. :set ignorecase

所以當我設置 ignorecase 變量後再使用前邊提到的命令,搜索 linux,那麼 Linux 所在處也會被高亮。

search case-insensitive

search case-insensitive

3、智能大小寫搜索

Vim 提供了一個功能,隻有當要搜索的單詞 / 模板包含大寫字母時,編輯器才會區分大小寫。要想實現這種功能,必須先設置 ignorecase,再接著設置 smartcase 變量。


  1. :set ignorecase
  2. :set smartcase

例如,如果一個文件中既包含 LINUX 也包含 linux,在開啟智能大小寫搜索功能時,如果使用 /LINUX 進行搜索,隻有單詞 LINUX 處會被搜到。反之,如果搜索 /linux,那麼不論大小寫的搜索結果都會被匹配。

4、遞進搜索

就如穀歌一樣,隨著你輸入查詢字串(字串隨你每輸入一個字符不斷更新)顯示不同的搜索結果,Vim 也同樣提供了遞進搜索。要想使用這種特性,你必須在搜索前執行下述命令:


  1. :set incsearch

一些很酷的在 Vim 中搜索的小技巧

你可能會發現還有一些其他的與搜索相關的小技巧很有用。

開始吧!如果你想要搜索一個文件中的一個單詞,但是又不想輸入它,你隻需要將你的光標移到這個單詞下然後按 * (或者 shift + 8)。如果你想要啟動一次部分搜索(例如:同時搜索 in 和 terminal),那你需要將光標移到到單詞(在本例中, in)下,然後通過在鍵盤上按 g* (按一次 g 然後不斷按 * )。

注意:如果你想要逆向搜索,按 # 或者 g# 。

原文發布時間為:2017-03-10

本文來自雲棲社區合作夥伴“Linux中國”

最後更新:2017-05-24 16:03:10

  上一篇:go  使用 Orange Pi 搭建 Time Machine 服務器
  下一篇:go  Linux 中 7 個判斷文件係統類型的方法