#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 может обрабатывать несколько файлов тегов одновременно
Стандартный подход
- установите (если у вас еще нет) ctags
:!ctags %
(или для рекурсивной целой папки и т.д.:!ctags -R %:h
или:!ctags **/*.c
etc)- используйте теги (C-] или Ctrl-MouseButton, см.
:help tags
для получения полной справки)
Вы можете интегрировать построение тегов в свой makefile, если он у вас есть. Exuberant ctags легко настраивается; Я обычно использую
ctags --exclude=packagedir -R --c -kinds= p --fields= iaS --extra= q
для использования с C , но он поддерживает множество языков «из коробки» с нулевой конфигурацией.
Комментарии:
1. Надеюсь, теперь я немного лучше понял ваш вопрос