vim 提供兩個按鍵來做搜尋,分別是 / 與 ? ,只差在要不要按 SHIFT。 而這兩個搜尋方式的差別在於, / 會是正向搜尋,也就是會往文件尾端做搜尋。 ? 則相反,會往文件開頭做反向搜尋。 使用方式很簡單,當按下 / 後,會像按 : 一樣進入命令模式,並在螢幕最下方一行讓我們輸入文字。 不同的是,用 / 進入命令模式輸入的文字是我們要搜尋的樣式( pattern )( 不知道有沒有更好的中文翻譯 )。 比如說我們想要找 vim 這個字在哪裡出現,只要輸入 /vim 後按下 ENTER 鍵,游標就會跳到那個字上面。 如果找不到的話也會顯示錯誤訊息。
通常找東西很難一次就找到,如果每次都要打 /vim 來找下一個 vim 在哪也太累了。 vim 想當然的會提供一些按鍵來快速地重複搜尋同一個 pattern。 使用 n ( next 下一個 ) 可以繼續找下一個符合的 pattern,而 N 則是反向的找上一個符合的 pattern。 要注意的是在用 / 做正向搜尋時, n 也會做正向搜尋,而 N 則會做反向搜尋。 相反的,在用 ? 做反向搜尋時, n 會做反向搜尋,而 N 會做正向搜尋。 有時候 / 和 ? 混用時可能會搞混。 總之,不管在哪個情況下, n 就是找下一個,而 N 是找上一個。
vim 還有個方式來搜尋現在游標所在的文字上。 比如同樣要找 vim,可以先將游標移到 vim 上,然後按下 * ,這跟 /vim 的效果是一樣的。 也就是說 * 會以游標所在的字作為 pattern 做正向搜尋。 另外反向搜尋的話可以用 # 。
再來講幾個搜尋時好用的設定,第一個是 :set hlsearch ,這可以讓被搜尋的 pattern 被 highlight,比較容易觀察。 如果看的不開心,可以用 :set nohlsearch 來永久取消 highlight,或是用 :nohlsearch ( 簡寫 :noh ) 來暫時取消 highlight。 另外一個是 :set incsearch ,和原本輸入完 pattern 按 ENTER 才做搜尋不同,它會在我們輸入 pattern 的同時做搜尋。 這樣的一個好處是我們可以看現在的 pattern 會搜尋到什麼,這在寫比較複雜的正規表示式時可以確保沒有寫錯。
那麼簡單的搜尋介紹就到這邊,接下來會講講 vim 的正規表示式。