Подтвердить что ты не робот

Поиск определений/ссылок на членов класса С++ в Vim

Я использую Vim для проекта на С++, над которым я начал работать, и я проводил много времени в последнее время, просматривая существующий код, чтобы понять его. Чтобы упростить просмотр, я установил ctags и cscope в Vim, чтобы перейти к определениям и найти ссылки.

Однако я считаю, что ни один из них не достаточно интеллектуальный, чтобы знать, к какому классу принадлежит член-переменная/функция. Например:

class Square;
...

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

Попытка найти определение rotate() также вызовет функции-члены из других классов, например Triangle. Я использую g] в Vim для отображения списка совпадающих тегов и, к счастью, ctags перечисляет связанный класс для каждой записи. Однако, когда есть 200 классов с одной и той же функцией-членом, может быть утомительно выслеживать правильный тег.

Кроме того, если у меня есть определение функции:

Square::rotate()
{
    ...
}

Попытка найти все вызовы rotate() с помощью cscope вызывает вызовы функций поворота Треугольника и других классов.

Из-за этого я нахожусь подпрыгивая до Visual Slickedit каждый раз, чтобы найти определение или ссылку на функцию-член или переменную-член. Есть ли способ сделать это в добром старом Vim?

4b9b3361

Ответ 1

SrcExpl может быть вашим плагином. Попробуйте.

Ответ 2

Я искал лучшие решения, чем cscope в прошлом, но так и не нашел. В конце концов, возможно, нехватка интеллекта на самом деле не такая уж большая проблема.

Проблема заключается в том, что на рынке нет мощной и открытой библиотеки intellisense. Возможно, CodeInsight.

Ответ 3

Похоже, это был бы хороший кандидат http://vim.wikia.com/wiki/C%2B%2B_code_completion. Мне повезло, что он делал подобные вещи на Java. Не совсем уверен, что вы получите все, что вы пытаетесь сделать, хотя.

Ответ 4

Вы можете попробовать taglist, хотя он все еще в некоторой степени страдает той же проблемой, что и встроенная поддержка ctag. Он работает таким же образом, что и SrcExpl.