這裡介紹如何在 Vim 編輯器中使用 g 指令,快速搜尋游標所在的文字。

在使用 Vim 撰寫程式時,時常會需要在整個程式碼檔案中搜尋某個變數或函數的定義,或是尋找某個變數在哪些地方出現過,在 Vim 中最基本的搜尋方式是使用 / 向後搜尋,或是使用 ? 向後搜尋,不過每次使用這些搜尋功能時都要自己手動輸入要搜尋的字串,但是如果要搜尋的變數名稱很長的時候,要這樣自己打就很麻煩了。

vim-g-tip-1

這裡我們介紹一個 Vim 中很實用的 g 指令,它可以讓使用者不必輸入那麼多文字就可以進行快速的搜尋與移動。

在使用之前,先將游標移動至要搜尋的變數上(這裡假設我們搜尋 immediate_callback_sym):

vim-g-tip-2

接著就可以使用下面幾種方式來搜尋指定的變數:

  • g*:向後搜尋游標所在位置的變數(或任何文字)。
  • g#:跟 g* 一樣,但是向前搜尋。
  • gd:移動到區域性(local)變數的宣告(declaration)位置。
  • gD:移動到全域性(global)變數的宣告位置。

如果這時候輸入 g*,Vim 就會向後搜尋 immediate_callback_sym

vim-g-tip-3

如果輸入 gd,就會移到 immediate_callback_sym 變數宣告的位置:

vim-g-tip-4

這裡的 g** 作用很相似,如果在 rain 這個文字上使用 g*,則連同 rainbow 這樣的字也會被納入搜尋,相當於使用 /\<rain\> 的效果:

vim-g-tip-5

但若使用 * 的話,就只會搜尋 rain 這個字而已,不會包含 rainbow,相當於使用 /rain

vim-g-tip-6

另外 g 指令還有兩個常見的用法:

  • gg:移動至檔案的第一行。
  • Ngg:移動至檔案的第 N 行,其中 N 可以是任何數字,例如 35gg 就是移動至第 33 行。
  • G:移動至檔案的最後一行。

參考資料:wikia