繁体   English   中英

vim ctag导致对fun的错误定义

[英]vim ctag leading to the wrong definition of fun

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

坦斯克!

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM