Как настроить мой vim, чтобы помочь мне найти определение терминов?

#vim

#vim

Вопрос:

Например, когда я сталкиваюсь:

 funcMiracle (argMagic);
  

Я хочу нажать кнопку, и вау, я сразу же перехожу к определению funcMiracle, независимо от того, есть оно в текущем файле или нет.

Ответ №1:

Установите exuberant ctags на свой компьютер. Затем из командной строки в корне вашего проекта:

 ctags -R 
  

Нажатие ctrl-[ в Vim приведет к переходу к определению символа. После перехода ctrl-T вернет вас туда, откуда вы только что пришли.

Комментарии:

1. Вопрос в том, что, хотя он может помочь мне найти любую функцию в моем проекте, он не будет автоматически находить внешние функции, которые я, вероятно, связал из файла заголовка, например, определение fgets() в stdio.h.

2. Вот руководство по настройке ctags для внешних библиотек: piao-tech.blogspot.com/2008/10 /…

Ответ №2:

Обновлено

Поскольку я прочитал ваш комментарий:

Вопрос в том, что, хотя он может помочь мне найти любую функцию в моем проекте, он не будет автоматически находить внешние функции, которые я, вероятно, связал из файла заголовка, например, определение fgets() в stdio.h

Взгляните на

  • C-[C-I для поиска по включенному файлу
  • C-[d для поиска и определения
  • Shift-K открывает справочную страницу для идентификатора под курсором (например fgets 🙂

С помощью скрипта man.vim вы также можете вызвать manpage внутри буфера Vim для простого копирования / вставки, выделения, перекрестных ссылок, как с помощью helptags etc. Клавиша: Leader-K

Еще раз, :he ^[^I и т.д. Являются хорошими указателями для получения дополнительной справки / деталей


Теги во внешних проектах

Вы можете сгенерировать теги для внешнего проекта (скажем, заголовки Linux), используя ctags , как показано ранее (ниже). Затем нужно сообщить Vim, где находятся ваши теги:

 :se tags =/usr/src/linux/tags
  

Обратите внимание на = : Vim может обрабатывать несколько файлов тегов одновременно


Стандартный подход

  1. установите (если у вас еще нет) ctags
  2. :!ctags % (или для рекурсивной целой папки и т.д. :!ctags -R %:h или :!ctags **/*.c etc)
  3. используйте теги (C-] или Ctrl-MouseButton, см. :help tags для получения полной справки)

Вы можете интегрировать построение тегов в свой makefile, если он у вас есть. Exuberant ctags легко настраивается; Я обычно использую

 ctags --exclude=packagedir -R --c  -kinds= p --fields= iaS --extra= q
  

для использования с C , но он поддерживает множество языков «из коробки» с нулевой конфигурацией.

Комментарии:

1. Надеюсь, теперь я немного лучше понял ваш вопрос