проблема с ctags при создании тегов для файлов .h и .c в двух разных каталогах

Теперь у меня есть два каталога, все файлы заголовков *.h включены в каталог /inc, а все файлы c *.c хранятся в каталоге /src.

Такой же каталог (/project — это каталог верхнего уровня):

/project-- |----/inc
           |----/src

Я хочу использовать ctrl+], чтобы найти определение одного параметра или одной функции в исходном файле, таком как example.c. Как генерировать эти теги?

Мой метод:

(1) cd to the /project directory

(2) ctags inc/*.h src/*.c

Затем там создается файл тегов, однако, когда я открываю файл примера и использую «Ctrl+]», он не может привести меня к его определению. Почему???

Нужно ли создавать файл тегов в /src???

Любая помощь? Большое спасибо!


person MaiTiano    schedule 01.12.2009    source источник
comment
на самом деле, когда я использую ctags -R в каталоге /src, это может привести меня к некоторому определению в исходных файлах, однако я не уверен, может ли это привести меня к чему-то, что определено в файле заголовка, расположенном в каталоге /inc. ......   -  person MaiTiano    schedule 01.12.2009


Ответы (2)


В vim попробуйте ввести:

  1. :pwd
  2. :set tags

Убедитесь, что путь к вашему файлу тегов присутствует в выводе 2 относительно пути, который является выводом 1.

ПРИМЕЧАНИЕ. Вы можете установить переменную tags как часть вашего локального файла .vimrc.

ОБНОВЛЕНИЕ: обычно для tags используется такой шаблон, как tags,../tags,../../tags. С этим шаблоном vim будет использовать первый файл тегов, который он найдет в вашей структуре папок (опять же относительно вашего pwd).

person Tim Henigan    schedule 01.12.2009
comment
после :set tags выдает что-то вроде этого tags=./tags,./TAGS,tags,TAGS... это правильно? - person MaiTiano; 01.12.2009
comment
@MiaTiano: это значение tags указывает vim искать файл тегов в том же каталоге, в котором вы открыли свой файл. Бьюсь об заклад, если вы добавите ../tags к пути поиска (как указано в моем ОБНОВЛЕНИИ выше), это сработает для вас. Суть в том, что vim начинает искать теги из pwd. Имена файлов, которые он ищет, перечислены в :set tags. - person Tim Henigan; 01.12.2009

Перейдите в /project и используйте команду «ctags -R». В вашем .vimrc поместите команду «set tags=/project/tags». Выйдите из vim и войдите снова. Теперь теги должны работать.

person Paul Tomblin    schedule 01.12.2009
comment
если я добавлю /project/tags в .vimrc, то все в дальнейшем будет влиять на это предложение, да? Кроме того, /project/tags является частью пути, нужно ли мне добавлять весь путь set tags=~/abcd/project/tags?? - person MaiTiano; 01.12.2009
comment
Да, размещение его в .vimrc повлияет на все, пока вы его не удалите. У меня есть куча файлов тегов, разделенных запятыми в моем .vimrc. И да, вам нужен полный путь. В вашем вопросе упоминается /project, поэтому я предположил, что это полный путь. - person Paul Tomblin; 01.12.2009
comment
Спасибо за подробный и добрый ответ. Я многому научился у вас. :) - person MaiTiano; 01.12.2009
comment
поскольку вы такой эксперт, и Тиму может понадобиться больше репутации, я думаю, вы не будете возражать, если я дам принятый ответ Тиму. :) - person MaiTiano; 01.12.2009
comment
Это нормально. Какой ответ вы нашли более полезным. - person Paul Tomblin; 01.12.2009