Я использую Vim для проекта на С++, над которым я начал работать, и я проводил много времени в последнее время, просматривая существующий код, чтобы понять его. Чтобы упростить просмотр, я установил ctags и cscope в Vim, чтобы перейти к определениям и найти ссылки.
Однако я считаю, что ни один из них не достаточно интеллектуальный, чтобы знать, к какому классу принадлежит член-переменная/функция. Например:
class Square;
...
Square a;
...
a.rotate();
Попытка найти определение rotate()
также вызовет функции-члены из других классов, например Triangle. Я использую g]
в Vim для отображения списка совпадающих тегов и, к счастью, ctags перечисляет связанный класс для каждой записи. Однако, когда есть 200 классов с одной и той же функцией-членом, может быть утомительно выслеживать правильный тег.
Кроме того, если у меня есть определение функции:
Square::rotate()
{
...
}
Попытка найти все вызовы rotate()
с помощью cscope вызывает вызовы функций поворота Треугольника и других классов.
Из-за этого я нахожусь подпрыгивая до Visual Slickedit каждый раз, чтобы найти определение или ссылку на функцию-член или переменную-член. Есть ли способ сделать это в добром старом Vim?