Поиск определений / ссылок на членов класса C ++ в Vim - PullRequest
17 голосов
/ 02 декабря 2009

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

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

class Square;
...

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

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

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

Square::rotate()
{
    ...
}

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

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

Ответы [ 4 ]

3 голосов
/ 02 декабря 2009

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

1 голос
/ 06 декабря 2009

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

1 голос
/ 05 декабря 2009

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

1 голос
/ 02 декабря 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...