vim ctag导致错误的乐趣定义

时间:2012-05-25 08:24:12

标签: c++ vim ctags

我正在使用vim的ctag来浏览c ++代码。 在许多情况下,它的工作正常。 但在以下情况下会出现一些错误:

vector<int> v;
v.push_back(10);

当我从这里的“push_back”导航时,它将我带到/usr/include/c++/4.4.7/bits/basic_string.h的push_back()

我想知道这是vim / ctags的错误还是缺点?

thansk!

2 个答案:

答案 0 :(得分:1)

Vim的标签导航不支持语法树。默认情况下,它会跳转到tags文件中的第一个匹配标记。

答案 1 :(得分:1)

ctags只是跳转到第一个匹配标签:“push_back()”。它不知道“v”的类型是“std :: vector”。解决此问题的唯一方法是不使用ctags。 我尝试了不同的vim插件,但是大多数都没有正常工作或根本没有用于c ++。

有插件clang_complete和YouCompleteMe,它们使用clang C ++编译器生成语法树。它们用于自动完成,但它们还提供了在c ++代码中导航的功能。 YouCompleteMe比clang_complete快得多,但我认为安装和配置它更加困难。

https://github.com/Valloric/YouCompleteMe

https://github.com/Rip-Rip/clang_complete