【发布时间】:2019-09-05 11:37:37
【问题描述】:
我有一个像这样的简单 c++ 文件:
class SomeClass
{
void SomeMethod() {};
};
class AnotherClass
{
void SomeMethod() {};
};
如果我使用ctags -R * 生成一个 ctags 文件,我得到:
AnotherClass main.cpp /^ class AnotherClass$/;" c file:
SomeClass main.cpp /^ class SomeClass$/;" c file:
SomeMethod main.cpp /^ void SomeMethod() {};$/;" f class:AnotherClass typeref:typename:void file:
SomeMethod main.cpp /^ void SomeMethod() {};$/;" f class:SomeClass typeref:typename:void file:
如您所见,SomeMethod 定义的条目没有区别,因为在 vim 中 tf 和 tn 始终显示文件中的第一个定义。
我也可以用ctags --fields=+n *添加行号
这导致:
...
AnotherClass main.cpp /^ class AnotherClass$/;" c line:6 file:
SomeClass main.cpp /^ class SomeClass$/;" c line:1 file:
SomeMethod main.cpp /^ void SomeMethod() {};$/;" f line:3 class:SomeClass typeref:typename:void file:
SomeMethod main.cpp /^ void SomeMethod() {};$/;" f line:8 class:AnotherClass typeref:typename:void file:
但如果我使用ta SomeMethod 和tn,vim 也总是跳转到SomeMethod 的第一个定义
我在这个版本中使用 ctags:
Universal Ctags 0.0.0(2614dbe1),版权所有 (C) 2015 Universal Ctags Team Universal Ctags 源自 Exuberant Ctags。 Exuberant Ctags 5.8,版权所有 (C) 1996-2009 Darren Hiebert 编译:2019 年 9 月 5 日,13:10:38 网址:https://ctags.io/ 可选编译特性:+wildcards、+regex、+iconv、+option-directory、+xpath、+yaml、+packcc
而vim是:
VIM - Vi 改进的 8.1 补丁 1-1713
【问题讨论】: