vim怎么跳转到函数定义处_vim技巧:在程序代码中快速跳转,在文件内跳转到变量定义处...

9274a2863dc09ce47dc5369fe28d356a.png

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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值