C++ vim、CTAG和同名标识符

C++ vim、CTAG和同名标识符,c++,vim,ctags,C++,Vim,Ctags,vim+ctags适用于C项目,因为C不允许函数重载,并且由于基本的作用域功能,通常鼓励手动为符号添加前缀 在C++中,函数经常重载,并且在子类中重写。这使得vim总是跳转到“Ctrl+]”上错误类中的标记。有没有办法让它表现得更聪明一点?我知道我可以带一个带有标签替代品的列表,但每当我想跳转到定义时,总是要带上这个列表,并按编号找到所需的标签,这是非常烦人的。还有“tagNext”可以移动到下一个标签(或:tn)我知道解决您问题的两个方法(似乎您也知道): 使用:t选择标签名称或g]并将光标

vim+ctags
适用于C项目,因为C不允许函数重载,并且由于基本的作用域功能,通常鼓励手动为符号添加前缀


在C++中,函数经常重载,并且在子类中重写。这使得vim总是跳转到
“Ctrl+]”
上错误类中的标记。有没有办法让它表现得更聪明一点?我知道我可以带一个带有标签替代品的列表,但每当我想跳转到定义时,总是要带上这个列表,并按编号找到所需的标签,这是非常烦人的。

还有“tagNext”可以移动到下一个标签(或:tn)

我知道解决您问题的两个方法(似乎您也知道):

  • 使用:t选择标签名称或g]并将光标放在标签上,以获取匹配标签的列表,并从列表中按编号转到标签上
  • 在热键上映射:tnext或:tprev(我已经映射到F6和F7)并手动查找所需的功能
您可以使用我的脚本,通过键入类名的一些字母或特殊标记(如“字段”、“函数”、“构造函数”等),帮助您选择所需的标记

我用了很多。它支持制表符完成,这很有帮助。如果找到多个标记,它将提供一个列表供您选择,如果只找到一个,它将直接跳转到标记(不像)

用法:

:tj foo

我很想看到这个问题的有用解决方案。现在我越来越多地使用Viemu,但当我转向非VC项目时,它仍然让我感到不安。好问题,我也想知道这个问题的答案。