Sunday, February 28, 2021

vim 的「搜尋」相關技巧

我研究了自己在 vim 裡的搜尋行為之後,發現了自己有兩個使用習慣,很明顯地沒有最佳化:

  • 有「無意義的反白高亮度顯示」,卻沒有關閉它。
  • 反覆搜尋同一個字串。
什麼是「無意義的反白高亮度顯示」呢?因為我有設定搜尋字串高亮度顯示,所以一旦我搜尋了 AAA,整個檔案裡所有的 AAA 字串都會變成『反白高亮度』。然而,當我按下 Enter 之後,也就意味著,我已經打算在某一個特定的 AAA 位置開始做編輯了。即使如此,這個時間點,『反白高亮度』卻不會自動消失,有時到達甚至造成干擾的程度。這時候,應該下的指令是 :noh ,這樣一來,就可以順利地關閉反白高亮度。

什麼時候會反覆搜尋同一字串呢?這個低效率的行為常發生在開發程式時,有時候要寫第 50 行的地方,卻需要同時參考第 15, 75, 95 行這三處的寫法。由於行號是會變動的,所以我通常是去記下某一行的關鍵字,比方說,第 15 行有一個關鍵詞是 upload ,我就透過搜尋 upload ,如此就可以從其它地方很快地回到該行。

上述的作法是很低效率的習慣。相對有效率的作法則是,使用 vim 的 marks 功能。比方說,如果我需要之後回到第 15 行的話,我就在該地方,先下個指令 ma ,讓 a 這個 mark 記住該位置。之後,如果我要回到那一行時,我只要下 `a ,就可以快速地回到 a mark 的位置。