詳解:Linux命令之 Vim的搜索技巧

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

詳解:Linux命令之 Vim的搜索技巧詳解:Linux命令之 Vim的搜索技巧

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

Vim 中的基礎搜索操做vim

當你在 Vim 中打開一個文件而且想要搜索一個特定的單詞或模板,第一步你必需要先按下 Esc鍵從插入模式中退出(若是你正處於插入模式中)。以後輸入/ 並緊接着輸入你要搜索的單詞或搜索模式。編輯器

例如,若是你想要搜索的單詞是linux,下圖顯示的就是在 Vim 窗口底部的搜索命令:詳解:Linux命令之 Vim的搜索技巧詳解:Linux命令之 Vim的搜索技巧ide

敲擊回車鍵以後,你會看到 Vim 會將光標停留在從光標在插入模式中的位置開始,找到的包含此單詞的第一行。若是你剛剛打開一個文件而且當即開始了搜索操做,搜索將從文件的首行開始。學習

若是想要移動到下一處包含被搜索單詞位置,按n 鍵。當你遍歷完全部被搜索模板所在之處,繼續按n 鍵 Vim 將重複搜索操做,光標將回到第一次搜索結果出現位置。測試

詳解:Linux命令之 Vim的搜索技巧詳解:Linux命令之 Vim的搜索技巧

在遍歷搜索結果時,若是你想要回到上一匹配處,按N(即shift+n。同時,值得注意的是無論在何時,你均可以輸入ggn 來跳轉到第一個匹配處,或者GN 來跳轉到最後一處。命令行

當你剛好在文件的底部,並且想要逆向搜索的狀況下,使用? 代替/ 來開始搜索。下圖是一個例子:詳解:Linux命令之 Vim的搜索技巧詳解:Linux命令之 Vim的搜索技巧視頻

自定義你的搜索htm

一、 高亮搜索結果

儘管經過n 或N 從被搜索單詞或模式的匹配處跳轉到另外一處很簡單,可是若是匹配處可以高亮就更加人性化了。例如,請看下附截圖:

詳解:Linux命令之 Vim的搜索技巧詳解:Linux命令之 Vim的搜索技巧

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

:set hlsearch

二、使搜索不區分大小寫

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

:set ignorecase

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

詳解:Linux命令之 Vim的搜索技巧詳解:Linux命令之 Vim的搜索技巧

三、智能大小寫搜索

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

:set ignorecase
:set smartcase

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

四、遞進搜索

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

:set incsearch

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

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

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

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

這裏有個視頻,你能夠看看:


視頻播放器

 

00:00

03:33

 

 

下一個,只要你想要,你能夠得到全部被搜索單詞或模式匹配處所在的行和行號的一個列表。這能夠在你開始搜索後經過按 [I 來實現。以下圖是一個列表結果如何在 Vim 窗口底部被分組和顯示的例子:

詳解:Linux命令之 Vim的搜索技巧詳解:Linux命令之 Vim的搜索技巧

接下來,你可能已經得知,Vim 默認是環形搜索的,意味着在到達文件結尾處(或者被搜索單詞的最後一處匹配)時,若是繼續按 「搜索下一個」 會將光標再次帶回第一處匹配處。若是你但願禁止環形搜索,可使用以下命令:

:set nowrapscan

再次開啓環形搜索,使用以下命令便可:

:set wrapscan

最後,假設你想要對文件中已經存在的單詞作一點小小的修改,而後對修改後的單詞執行搜索操做,一種方法是輸入 / 與要搜索的單詞。可是若是這個單詞又長又複雜,那麼可能須要一點時間來輸入它。

一個簡單的辦法是將光標移到你想要略微修改的單詞下,按/ 以後再按Ctrl +r 最後按 Ctrl塊 + w 。這個在光標下的單詞不只僅會被拷貝,也會被複制到/ 後,容許你對它進行修改而且繼續進行搜索操做。

若是想要得到更多小技巧(包括如何使用鼠標來使在 Vim 中的操做變得簡單),請前往 Vim 官方文檔。

結語

固然,沒有人但願你死記硬背這裏提到的全部小技巧。你應該作的是,從一個你認爲對你最有益的技巧開始不斷練習。當它成爲一種習慣而且嵌入你的記憶後,從新來這兒找找你應該開始學習的下一個技巧。

本文來自:http://www.linuxprobe.com/linux-vim-search.html

免費提供最新linux技術教程書籍,爲開源技術愛好者努力作得更多更好,開源站點:http://linuxprobe.com/

相關文章
相關標籤/搜索