本篇文章介紹 vim 的一些使用技巧:vim
在程序代碼中快速跳轉
在 vim 中查看代碼文件時,能夠使用下面命令在程序代碼中快速跳轉,提升效率。函數
- %
跳轉到光標所在括號的另外一個配對括號上,適用於小括號()
、大括號{}
、方括號[]
。
例如當前光標在左大括號 {
上,輸入 %
命令,光標會跳轉到配對的右大括號 }
上。
這個命令也適用於C語言的條件編譯宏,能夠在配對的 #if
、#ifdef
、#else
、#elif
、 #endif
之間快速跳轉光標。
- [m
跳轉到當前光標往上的最近一個函數開頭,停在左大括號上。
若是光標在函數內,就是跳轉到當前函數的開頭左大括號。
若是光標在函數外,則跳轉到上面最近一個函數的開頭左大括號。
- [M
跳轉到當前光標往上的最近一個函數結尾,停在右大括號上。
不管當前光標在函數內、仍是函數外,都是跳轉到上面最近一個函數的末尾右大括號。
- ]m
跳轉到當前光標往下的最近一個函數開頭,停在左大括號上。
不管當前光標在函數內、仍是函數外,都是跳轉到下面最近一個函數的開頭左大括號。
- ]M
跳轉到當前光標往下的最近一個函數結尾,停在右大括號上。
若是光標在函數內,就是跳轉到當前函數的末尾右大括號。
若是光標在函數外,則跳轉到下面最近一個函數的末尾右大括號。
- [{
跳轉到當前光標往上最近一個沒有匹配的左大括號,停在左大括號上。
例如光標在 if
語句內,則跳轉到 if
語句開頭左大括號。
- ]}
跳轉到當前光標往下最近一個沒有匹配的右大括號,停在右大括號上。
例如光標在 if
語句內,則跳轉到 if
語句末尾右大括號。
- [(
跳轉到當前光標前面最近一個沒有匹配的左小括號,停在左小括號上。
例如光標在一個小括號 ()
內,則跳轉到左邊最近的左小括號。
- ])
跳轉到當前光標後面最近一個沒有匹配的右小括號,停在右小括號上。
例如光標在一個小括號 ()
內,則跳轉到右邊最近的右小括號。
這些命令均可以在前面加上數字,表示跳轉級數. 例如:測試
- 3[m
將跳轉到當前光標往上的第三個函數開始處,停在左大括號上。
若是光標在函數內,則當前函數是第一個函數,會再往上跳兩個函數。
- 3[{
將跳轉到當前光標往上的第三級大括號開始處,停在左大括號上。
能夠使用 :help [(
命令查看 [(
的說明。%
的說明在 [(
的上面。
能夠使用 :help [m
命令查看 [m
的說明。
其餘命令的說明能夠相似查看。code
在文件內跳轉到變量定義處
在當前文件內,能夠使用下面命令來快速跳轉到變量定義處。字符串
- gd
在當前函數內查找當前光標下的單詞,若是找到,就跳轉到該單詞在函數內第一次出現的地方。
對局部變量來講,也就是跳轉到變量定義處。
若是光標下的單詞對應全局變量,這個命令不會跳轉到全局變量定義處,而是會跳轉到函數內第一次用到該變量的地方。
這個命令自己沒有進行語法解析,只是簡單的執行字符串搜索並跳轉。在實際使用時可用來查找任意單詞,不限於查找變量。
- gD
在當前文件內查找當前光標下的單詞,若是找到,就跳轉到該單詞在文件內第一次出現的地方。
對全局變量來講,也就是跳轉到全局變量定義處。
對局部變量來講,也能跳轉到局部變量定義處。
若是變量是在文件外定義,就只能跳轉到當前文件內第一次用到該變量的地方。
實際測試,gd 命令只能在函數內搜索,不會跳轉到全局變量定義處。gD 命令是在整個文件內搜索,能夠跳轉到全局變量定義處,也能跳轉到函數內的局部變量定義處。編譯
若是不確認要搜索的單詞是全局變量,仍是局部變量,統一用 gD 命令便可。若是變量是在當前文件內定義,gD 命令必定能跳轉到文件內的變量定義處,比 gd 命令要方便。效率
能夠用 :help gd
和 :help gD
命令來查看幫助說明,這兩個命令的幫助說明是相鄰的。變量