本篇文章介绍 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
命令来查看帮助说明,这两个命令的帮助说明是相邻的。变量