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

时间:2009-12-02 05:42:51

标签: c++ vim

我正在使用Vim进行一个我开始研究的C ++项目,并且我最近花了很多时间浏览现有的代码来获取它。为了使浏览更容易,我在Vim中设置了ctags和cscope来跳转到定义并找到引用。

然而,我发现他们都不够聪明,无法知道成员变量/函数属于哪个类。例如:

class Square;
...

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

尝试找到rotate()的定义也会带来其他类的成员函数,比如Triangle。我在Vim中使用g]来显示匹配标记的列表,幸运的是,ctags列出了每个条目的关联类。但是,当有200个具有相同成员函数的类时,追捕正确的标记可能会很烦人。

另外,如果我在函数定义中:

Square::rotate()
{
    ...
}

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

因此,我发现自己偶尔跳到 Visual Slickedit 来查找成员函数或成员变量的定义或引用。有没有什么办法可以在古老的 Vim 中实现这个目标?

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

我过去一直在寻找比cscope更好的解决方案,但从来没有找到过什么。最后,也许cscope缺乏智能并不是那么麻烦。

问题在于市场上没有强大而开放的智能感知库。也许是CodeInsight

答案 2 :(得分:1)

这似乎是一个很好的候选人http://vim.wikia.com/wiki/C%2B%2B_code_completion。我有一些好运,它在Java中做类似的事情。不完全确定它可以为你提供你想要做的一切。

答案 3 :(得分:1)

你可以试试taglist插件,虽然它在某种程度上仍然遇到与内置ctag支持相同的问题。它的工作方式与SrcExpl的工作方式相同。