Vim的ctags表现奇怪。

我刚开始学习Lua开发,所以在一个简单的入门项目上运行了ctags,尝试使用Ctrl+]在源代码中跳转。但在尝试时,我得到了“E426:tag not found:cache_objects”的错误提示,其中cache_objects是另一个文件中的一个函数。我检查了标签文件,cached_objects的正确条目已经在那里了。我还检查了我的标签路径,也是正确的。

然后我尝试明确执行标签命令::ta cache_objects。这返回了相同的错误。现在事情即将变得奇怪。我执行了::ta /cache_objects,它奏效了!它把我带到了这个函数的定义:

function cache_objects (basedir)
    ...

我三重检查了拼写以确保是正确的。这是怎么回事?

点赞
用户1890567
用户1890567

这是ctags中的一个bug。http://sourceforge.net/p/ctags/bugs/347/

如果您在标签文件中注意到字段是以制表符分隔的。但是当ctags生成cache_objects标签时,它包含了后面的空格。当使用<C-]>时,vim只寻找完整的单词,这就是为什么找不到标签,但使用正则表达式搜索时可以找到。如果将该行改为

function cache_objects(basedir)

就能解决。

2014-08-13 03:05:38