在Vim中查找C++类成员的定义/引用

17

我正在使用Vim编辑器进行C++项目的开发,最近我经常浏览现有代码以熟悉它。为了方便浏览,我使用了ctags和cscope插件,以便跳转到定义并查找引用。

然而,我发现它们都无法智能地知道一个成员变量/函数属于哪个类。例如:

class Square;
...

Square a;
...
a.rotate();

查找rotate()的定义时,会出现其他类的成员函数,比如Triangle。我使用Vim中的g]命令来列出匹配标签的列表,幸运的是ctags列出了每个条目的相关类。但是,当有200个类都有同一个成员函数时,寻找正确的标签可能很烦琐。

另外,如果我正在查看一个函数的定义:

Square::rotate()
{
    ...
}

使用cscope查找所有对rotate()的调用会出现对Triangle和其他类的旋转函数的调用。

因此,我不得不时不时地跳到Visual Slickedit中查找成员函数或成员变量的定义或引用。有没有办法在老旧的Vim中完成这个任务?

4个回答

3

SrcExpl 可能是你需要的插件。试试看吧。


1

1
你可以尝试使用taglist插件,虽然它在某种程度上仍然存在与内置ctag支持相同的问题。它的工作方式与SrcExpl类似。

1

我曾经寻找比cscope更好的解决方案,但从未找到过。最终,也许cscope缺乏智能并不是真正的问题。

问题在于市场上没有强大且开放的智能感知库。也许CodeInsight可以解决这个问题。


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