Vim 反向移动 * 移动到函数调用

don*_*lan 2 vim

使用vim时,

我经常shift-*调用我的函数来转到该函数。如果我知道该函数位于光标上方,但下方有很多函数,如何反向移动-*?

Chr*_*ons 9

*在正常模式下将向前搜索光标下的单词。从那里,您可以按n获取该单词的下一个实例,也可以按N获取该单词的上一个实例。

要回答向后搜索的问题,您可以使用 来#对当前单词进行反向搜索。从那里开始,按下n将启动下一个实例,而按下N将反转反向并向前搜索下一个实例。

要执行您真正想做的操作(即跳转到函数定义),请考虑使用ctags. ctags如果您使用或等实用程序为项目创建标签etags,则可以使用ctrl-]跳转到光标下函数的定义。如果它位于同一个文件中(考虑到您正在搜索以获得此类功能,应该适用于您当前的情况),我认为即使不设置标签文件,它也可能在某种程度上起作用。

如果您还对查找函数的调用位置感兴趣(c至少在 中),那么另一个名为的实用程序cscope可以提供帮助。与 ctags 一样,您需要cscope.out使用 cscope 实用程序构建文件。一旦完成,您就可以使用 vim 的 cscope 挂钩。要使用 cscope 获取对函数的调用列表,您可以使用以下命令调用它(注意是CTRL- R):

:cs find c <C-R>=expand("<cword>")
Run Code Online (Sandbox Code Playgroud)

一直写下来有点麻烦,所以我把它放在我的 .vimrc 中,以便可以调用它g[

nnoremap g[ :cs find c <C-R>=expand("<cword>")<CR><CR>
Run Code Online (Sandbox Code Playgroud)