如何在c ++中为类创建ctags帐户?当我跳转到函数的标签时,我会得到函数的相同名称但是在错误的类中。
B b; b.init();
并且有
A :: init(){} B :: init(){}
我将光标放在b.init()的init上,跳转到A :: init(){}而不是B :: init(){}。
注意,我没有在我的代码中使用a和b。所以如果你运行ctags,这可能不起作用。如果这不是一个常见问题,我可以发布实际代码。
答案 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
。