Ответ 1
SrcExpl может быть вашим плагином. Попробуйте.
Я использую Vim для проекта на С++, над которым я начал работать, и я проводил много времени в последнее время, просматривая существующий код, чтобы понять его. Чтобы упростить просмотр, я установил ctags и cscope в Vim, чтобы перейти к определениям и найти ссылки.
Однако я считаю, что ни один из них не достаточно интеллектуальный, чтобы знать, к какому классу принадлежит член-переменная/функция. Например:
class Square;
...
Square a;
...
a.rotate();
Попытка найти определение rotate()
также вызовет функции-члены из других классов, например Triangle. Я использую g]
в Vim для отображения списка совпадающих тегов и, к счастью, ctags перечисляет связанный класс для каждой записи. Однако, когда есть 200 классов с одной и той же функцией-членом, может быть утомительно выслеживать правильный тег.
Кроме того, если у меня есть определение функции:
Square::rotate()
{
...
}
Попытка найти все вызовы rotate()
с помощью cscope вызывает вызовы функций поворота Треугольника и других классов.
Из-за этого я нахожусь подпрыгивая до Visual Slickedit каждый раз, чтобы найти определение или ссылку на функцию-член или переменную-член. Есть ли способ сделать это в добром старом Vim?
SrcExpl может быть вашим плагином. Попробуйте.
Я искал лучшие решения, чем cscope в прошлом, но так и не нашел. В конце концов, возможно, нехватка интеллекта на самом деле не такая уж большая проблема.
Проблема заключается в том, что на рынке нет мощной и открытой библиотеки intellisense. Возможно, CodeInsight.
Похоже, это был бы хороший кандидат http://vim.wikia.com/wiki/C%2B%2B_code_completion. Мне повезло, что он делал подобные вещи на Java. Не совсем уверен, что вы получите все, что вы пытаетесь сделать, хотя.
Вы можете попробовать taglist, хотя он все еще в некоторой степени страдает той же проблемой, что и встроенная поддержка ctag. Он работает таким же образом, что и SrcExpl.