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

Vim, ctags и идентично названные идентификаторы

vim + ctags хорошо работает для проектов C, так как C не допускает перегрузки функций и, в общем, поощряет ручное префикса символов из-за элементарных объектов видимости.

В С++ функции часто перегружаются и переопределяются в подклассах. Это позволяет vim всегда переходить к тегу в неправильном классе на "Ctrl + ]". Есть ли способ заставить его вести себя более разумно? Я знаю, что могу привести список с альтернативами тегов, но это безумно раздражает, чтобы всегда приводить этот список и найти нужный тег по номеру, когда я хочу перейти к определению.

4b9b3361

Ответ 1

Существует также "tagNext" для перехода к следующему тегу (или: tn <enter> )

Ответ 2

Я использую tjump. Он поддерживает вкладку, которая полезна. Если найдено несколько тегов, он предоставит вам список для выбора, если будет найден только один, он перейдет прямо к тегу (в отличие от tselect).

Использование:

:tj foo

Ответ 3

Я знаю два обходных пути для вашей справки (кажется, вы тоже это знали):

  • Используйте: tselect и имя тега или g] с помощью курсора на теге для получения списка совпадающих тегов и goto on tag по номеру из списка;
  • map: tnext или: tprev на горячих клавишах (я отображен на F6 и F7) и найти нужную функцию вручную;

Ответ 4

Вы можете использовать мой script, который поможет вам выбрать необходимый тэг, набрав несколько букв имени класса или специальных тегов, таких как "поле", "функция", "конструктор" и т.д.

http://www.vim.org/scripts/script.php?script_id=2507