ctag 忽略 c++ 中的类
如何让 ctags 代表 C++ 中的类?当我跳转到函数的标签时,我得到了该函数的相同名称,但在错误的类中。
乙b; b.init();
还有
A::init() {} B::init() {}
我将光标放在 b.init() 的 init 上,跳转到 A::init() {} 而不是 B::init() {}。
注意,我的代码中没有使用 a 和 b 。所以如果你运行 ctags 这可能不起作用。如果这不是常见问题,我可以发布实际代码。
how do you make ctags account for class in c++? when i jump to a tag of a function i get to the same name of the function but in a wrong class.
B b;
b.init();
and there are
A::init() {}
B::init() {}
i put the cursor on init of b.init() and the jump is to A::init() {} instead of B::init() {}.
Note, i didn't use a and b in my code. so this might not work if u run ctags. if it's not a common problem i ca post the actual code.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这并不能解决您原来的问题,但如下所示的映射可能会有所帮助:
当
init() 有多个定义时,这至少会使
。CTRL+]
显示选择菜单This doesn't solve your original problem, but a mapping such as the following may help:
This will at least make
CTRL+]
show you a selection menu when there are multiple definitions ofinit()
.我不知道有什么方法可以做到这一点,因为它需要 vim 进行 c++ 解析。在这种情况下,我使用
:tselect
显示整个列表并选择一个。I am not aware of any method to do this, as it would require vim to do c++ parsing. In that situation I use
:tselect
to show the whole list and choose one.我写了 lh-tags 来解决这个问题[它将需要 lh-vim-lib。]
它无法识别无论 b 是 A 还是 B,但它提供了一个小 GUI 来选择我们要跳转到的标签。
将其视为交互式
:tselect
。将光标放在标识符上,然后在正常模式(可配置)下输入
。它还提出了基于ta
和:w
构建和更新 ctag 的方法,因为g:
/b:ctags_dirname
已为当前项目设置。I wrote lh-tags to solve this problem [It will require lh-vim-lib.]
It does not recognize whether b is a A or a B, but it proposes a little GUI to select which tag we want to jump to.
See it as an interactive
:tselect
. Put the cursor on an identifier and type<c-w><m-down>
in normal mode (which is configurable). It also proposes ways to build and update the ctags base on<c-x>ta
and on:w
given thatg:
/b:ctags_dirname
has been set for the current project.