ctag忽略了c ++中的类

时间:2010-10-21 22:19:01

标签: c++ vim ctags exuberant-ctags

如何在c ++中为类创建ctags帐户?当我跳转到函数的标签时,我会得到函数的相同名称但是在错误的类中。

B b; b.init();

并且有

A :: init(){} B :: init(){}

我将光标放在b.init()的init上,跳转到A :: init(){}而不是B :: init(){}。

注意,我没有在我的代码中使用a和b。所以如果你运行ctags,这可能不起作用。如果这不是一个常见问题,我可以发布实际代码。

3 个答案:

答案 0 :(得分:3)

这不能解决您的原始问题,但如下所示的映射可能有所帮助:

nnoremap CTRL+] :exe 'tj' expand('<cword>')<CR>

CTRL+]有多个定义时,至少会让init()显示一个选择菜单。

答案 1 :(得分:1)

我不知道有任何方法可以做到这一点,因为它需要vim来进行c ++解析。在那种情况下,我使用:tselect来显示整个列表并选择一个。

答案 2 :(得分:0)

我写了lh-tags来解决这个问题[需要lh-vim-lib。]

它无法识别b是A还是B,但它提出了一个小GUI来选择我们想要跳转到哪个标签。

将其视为互动式:tselect。将光标放在标识符上并在正常模式下键入<c-w><m-down>(可配置)。它还提出了在<c-x>ta:w上构建和更新ctags的方法,因为已为当前项目设置了g: / b:ctags_dirname