vim, ctags и идентификаторы с одинаковыми именами - PullRequest
17 голосов
/ 18 марта 2009

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

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

Ответы [ 4 ]

13 голосов
/ 18 марта 2009

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

8 голосов
/ 19 марта 2009

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

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

:tj foo
7 голосов
/ 18 марта 2009

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

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

Вы можете использовать мой скрипт, который поможет вам выбрать нужный тег, набрав несколько букв имени класса или специальные теги, такие как 'field', 'function', 'constructor' и т. Д.

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

...