Vim shift * in reverse 移动到函数调用

标签 vim

使用 vim 时,

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

最佳答案

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

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

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

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

:cs find c <C-R>=expand("<cword>")

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

nnoremap g[ :cs find c <C-R>=expand("<cword>")<CR><CR>

关于Vim shift * in reverse 移动到函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50102805/

相关文章:

Vim 内联重映射以检查第一个字符

HTML 字符串 vim 语法高亮

regex - 使用 vim regexp 清除文件中的前导零

regex - Vim:匹配行尾的空格但不匹配由单个空格组成的行

Vim 脚本 : find last open parenthese or bracket

gcc - 我可以使用 GCC 编译器和 Clangd 语言服务器吗?

vim LineNr 和 CursorLine 颜色配置更改

c++ - 我如何使用 gdbvim 附加到进程?

vim - Vim 的标签列表中是否支持 Cython?

python - 从 syntastic 中删除条目