vim技巧:在程序代碼中快速跳轉,在文件內跳轉到變量定義處

vim技巧:在程序代碼中快速跳轉,在文件內跳轉到變量定義處

本篇文章介紹 vim 的一些使用技巧:

  • 在程序代碼中快速跳轉
  • 在文件內跳轉到變量定義處

在程序代碼中快速跳轉

在 vim 中查看代碼文件時,可以使用下面命令在程序代碼中快速跳轉,提高效率。

  • %
    跳轉到光標所在括號的另一個配對括號上,適用於小括號()、大括號{}、方括號[]。
    例如當前光標在左大括號 { 上,輸入 % 命令,光標會跳轉到配對的右大括號 } 上。
    這個命令也適用於C語言的條件編譯宏,可以在配對的 #if、#ifdef、#else、#elif、 #endif 之間快速跳轉光標。
  • [m
    跳轉到當前光標往上的最近一個函數開頭,停在左大括號上。

    如果光標在函數內,就是跳轉到當前函數的開頭左大括號。
    如果光標在函數外,則跳轉到上面最近一個函數的開頭左大括號。
  • [M
    跳轉到當前光標往上的最近一個函數結尾,停在右大括號上。
    無論當前光標在函數內、還是函數外,都是跳轉到上面最近一個函數的末尾右大括號。
  • ]m
    跳轉到當前光標往下的最近一個函數開頭,停在左大括號上。
    無論當前光標在函數內、還是函數外,都是跳轉到下面最近一個函數的開頭左大括號。
  • ]M
    跳轉到當前光標往下的最近一個函數結尾,停在右大括號上。
    如果光標在函數內,就是跳轉到當前函數的末尾右大括號。
    如果光標在函數外,則跳轉到下面最近一個函數的末尾右大括號。
  • [{

    跳轉到當前光標往上最近一個沒有匹配的左大括號,停在左大括號上。
    例如光標在 if 語句內,則跳轉到 if 語句開頭左大括號。
  • ]}
    跳轉到當前光標往下最近一個沒有匹配的右大括號,停在右大括號上。
    例如光標在 if 語句內,則跳轉到 if 語句末尾右大括號。
  • [(
    跳轉到當前光標前面最近一個沒有匹配的左小括號,停在左小括號上。
    例如光標在一個小括號 () 內,則跳轉到左邊最近的左小括號。
  • ]) 跳轉到當前光標後面最近一個沒有匹配的右小括號,停在右小括號上。
    例如光標在一個小括號 () 內,則跳轉到右邊最近的右小括號。

這些命令都可以在前面加上數字,表示跳轉級數. 例如:

  • 3[m
    將跳轉到當前光標往上的第三個函數開始處,停在左大括號上。
    如果光標在函數內,則當前函數是第一個函數,會再往上跳兩個函數。
  • 3[{
    將跳轉到當前光標往上的第三級大括號開始處,停在左大括號上。

可以使用 :help [( 命令查看 [( 的說明。% 的說明在 [( 的上面。
可以使用 :help [m 命令查看 [m 的說明。
其他命令的說明可以類似查看。

在文件內跳轉到變量定義處

在當前文件內,可以使用下面命令來快速跳轉到變量定義處。

  • gd
    在當前函數內查找當前光標下的單詞,如果找到,就跳轉到該單詞在函數內第一次出現的地方。
    對局部變量來說,也就是跳轉到變量定義處。
    如果光標下的單詞對應全局變量,這個命令不會跳轉到全局變量定義處,而是會跳轉到函數內第一次用到該變量的地方。
    這個命令本身沒有進行語法解析,只是簡單的執行字符串搜索並跳轉。在實際使用時可用來查找任意單詞,不限於查找變量。
  • gD
    在當前文件內查找當前光標下的單詞,如果找到,就跳轉到該單詞在文件內第一次出現的地方。
    對全局變量來說,也就是跳轉到全局變量定義處。
    對局部變量來說,也能跳轉到局部變量定義處。
    如果變量是在文件外定義,就只能跳轉到當前文件內第一次用到該變量的地方。

實際測試,gd 命令只能在函數內搜索,不會跳轉到全局變量定義處。

gD 命令是在整個文件內搜索,可以跳轉到全局變量定義處,也能跳轉到函數內的局部變量定義處。

如果不確認要搜索的單詞是全局變量,還是局部變量,統一用 gD 命令即可。如果變量是在當前文件內定義,gD 命令一定能跳轉到文件內的變量定義處,比 gd 命令要方便。

可以用 :help gd:help gD 命令來查看幫助說明,這兩個命令的幫助說明是相鄰的。


分享到:


相關文章: