如何使用vim';s";ctrl+;]&引用;查找用'定义的函数-';

如何使用vim';s";ctrl+;]&引用;查找用'定义的函数-';,vim,makefile,ctags,Vim,Makefile,Ctags,嗨~我是新来的,我对维姆有点问题 我得到了makefile,有一些函数是用'-'定义的,比如“存根插件jar” 然后我使用ctags生成标记文件,它实际上得到了这些函数的定义 之后,我用vim打开一个makefile,设置tag变量,用一个普通变量测试“ctrl+]”,它工作正常 然后我将光标放在调用函数“stub addon jar”的位置,并划过“ctrl+]”。但vim显示“未找到标签:插件” vim似乎没有得到整个“stub addon jar”,而是将“addon”作为标记的输入 我如

嗨~我是新来的,我对维姆有点问题

我得到了makefile,有一些函数是用'-'定义的,比如“存根插件jar”

然后我使用ctags生成标记文件,它实际上得到了这些函数的定义

之后,我用vim打开一个makefile,设置tag变量,用一个普通变量测试“ctrl+]”,它工作正常

然后我将光标放在调用函数“stub addon jar”的位置,并划过“ctrl+]”。但vim显示“未找到标签:插件”

vim似乎没有得到整个“stub addon jar”,而是将“addon”作为标记的输入


我如何解决这个问题?是不是因为vim使用的分词方法?

这是一个困难的问题。我尝试过几种方法,但当我命名这样的函数时,它对我的作用是相同的。我能找到的最接近的方法是将光标放在函数上,然后按
gd
(搜索本地定义)或
gd
在当前文件之外搜索

注意,gd和gd(转到定义)是内置的vim命令


我最喜欢的插件之一是。单击调用点不会进入定义。它将向您显示文件中所有函数的列表,并允许您通过单击它们传输到其中任何一个。这些名称没有问题。

正如FDinoff在他的评论中提到的那样,正确的解决方案是更改vim对单词的定义,以包含
-
字符

set iskeyword+=-
设置此选项后,标记跳转应能正常工作


下面是另一个讨论在单词定义中添加和删除字符的示例。

您可以使用正则表达式搜索而不是默认的整词搜索:

:tag /addon<CR>
nnoremap <C-]> :tag /<c-r>=expand('<cword>')<CR><CR>
:标签/插件
nnoremap:tag/=展开(“”)

答案与我今天早些时候回答的问题完全相同,@FDinoff您的答案很好,非常感谢!事实上,我试过gD和taglist。我现在的情况是,一个makefile在一个子目录中包含另一个。后者调用前者中定义的函数。标记列表仅显示本地文件中的变量和函数。当函数名由一些常用词组成时,gD的工作方式与预期不同。但还是要感谢你的回答!也谢谢你的回答~!