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

Vim: Как перейти к объявлению (класса, метода, функции, переменной и т.д.)

Сейчас я работаю над файлом, который использует много классов, методов, функций, переменных и т.д. Можно ли перейти к объявлению всех из них? Пожалуйста, учтите, что некоторые из этих объявлений находятся в одном файле, но другие находятся в других файлах (которые не могут быть открыты и вы не знаете, где находятся объявления, но они существуют). Что произойдет, если декларация будет на один уровень выше в каталоге? и что, если он на один уровень ниже?

Это делается по-другому в соответствии с языком программирования, о котором мы говорим, или процедура поиска объявлений одинакова независимо от языка?

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

Я знаю, что это можно сделать с помощью IDE, но я хотел бы знать, насколько это может быть достигнуто с помощью vim.

У меня только новая установка Vim. Я еще не установил плагины, но готов сделать, если это необходимо. Возможно, это можно сделать без и с плагинами.

Спасибо заранее!

4b9b3361

Ответ 1

Настройка тегов не так сложна, хотя (как и большинство вещей в Vim) она не такая автоматическая по сравнению с IDE.

  • Сначала вам понадобится инструмент ctags. Наиболее распространенным сегодня является Exuberant Ctags, найденный в ctags.sourceforge.net.
  • Затем вам нужно создать базу данных тэгов (имена файлов tags) для всех файлов в вашем проекте (проектах). Обычно это делается путем запуска ctags -R . из корня проекта (также изнутри Vim через :!ctags ...). Exuberant Ctags поддерживает 41 язык, и вы даже можете продлить его с помощью регулярных выражений.
  • Наконец, Vim необходимо настроить для сбора базы данных тэгов. С помощью :set tags=./tags; он будет искать в каталоге файлов вверх в корневой каталог. Если у вас есть определенные глобальные каталоги include, вы можете добавить их.
  • С этим вы можете начать использовать теги Vim, такие как <C-]> и :tag.

Вам необходимо периодически обновлять базу данных тэгов; есть плагины (например easytags.vim), которые могут сделать это автоматически для вас.

Ответ 2

Вы можете попробовать gd, он переходит в локальную декларацию, для более мощного "перехода к определению" вы можете попробовать tags, как предположил Инго.