Vim、Ctags和同名标识符

18

vim + ctags 对于C项目来说很有效,因为C不允许函数重载,并且由于基础的作用域限制,一般鼓励手动添加前缀符号。

在C++中,函数经常被重载并在子类中被覆盖。这使得当按下"Ctrl + ]"时,vim总是跳转到错误类中的标签。有没有一种方法可以使它表现得更加智能一些?我知道可以使用标签备选项列表,但每次想要跳转到定义时都要带出这个列表然后根据编号查找需要的标签,这样做非常麻烦。


很希望能看到这个问题的有用解决方案。我现在使用Viemu越来越多,对此影响不那么大了,但当我转换到非VC项目时仍会困扰我。 - RedBlueThing
很棒的问题,我也想知道答案。 - Dan
4个回答

13

还有"tagNext"命令可以移动到下一个标签(或 :tn<enter>)


8

我经常使用tjump。它支持标签自动完成,非常有帮助。如果找到多个标签,它会为你提供一个列表让你选择,如果只找到一个,它将直接跳转到标签(不像tselect)。

用法:

:tj foo

7

我知道两种解决方案可以解决你的问题(看起来你也知道):

  • 使用:tselect和标签名称或在标签上使用g],以获取匹配标签列表并通过列表中的数字跳转到标签;
  • 将:tnext或:tprev映射到热键上(我已将其映射到F6和F7),并手动查找所需的函数;

5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接