4

我正在使用 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 的错误或缺点?

谢谢!

4

2 回答 2

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

于 2014-08-20T20:59:31.627 回答
1

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

于 2012-05-25T12:03:27.190 回答