你如何让 ctags 占 c++ 中的类?当我跳转到一个函数的标签时,我得到了函数的同名但在一个错误的类中。
乙乙; b.init();
并且有
A::init() {} B::init() {}
我将光标放在 b.init() 的 init 上,跳转到 A::init() {} 而不是 B::init() {}。
请注意,我没有在我的代码中使用 a 和 b 。因此,如果您运行 ctags,这可能不起作用。如果这不是常见问题,我会发布实际代码。
你如何让 ctags 占 c++ 中的类?当我跳转到一个函数的标签时,我得到了函数的同名但在一个错误的类中。
乙乙; b.init();
并且有
A::init() {} B::init() {}
我将光标放在 b.init() 的 init 上,跳转到 A::init() {} 而不是 B::init() {}。
请注意,我没有在我的代码中使用 a 和 b 。因此,如果您运行 ctags,这可能不起作用。如果这不是常见问题,我会发布实际代码。
这并不能解决您最初的问题,但如下映射可能会有所帮助:
nnoremap CTRL+] :exe 'tj' expand('<cword>')<CR>
CTRL+]
当有多个定义时,这至少会显示一个选择菜单init()
。
我不知道有任何方法可以做到这一点,因为它需要 vim 来进行 c++ 解析。在那种情况下,我:tselect
会显示整个列表并选择一个。
我写了lh-tags来解决这个问题 [它将需要lh-vim-lib。]
它不能识别 b 是 A 还是 B,但它提供了一个小 GUI 来选择我们想要跳转到的标签。
将其视为交互式:tselect
. 将光标放在标识符上并<c-w><m-down>
在正常模式下键入(可配置)。它还提出了基于/已为当前项目设置的情况下构建和更新ctags<c-x>ta
的方法。:w
g:
b:ctags_dirname