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