vim tags - символическая ссылка
У меня есть проект следующим образом:
/dir
dir1
dir2 -> symbolic-link to /otherdir
file1
tags *
- Я хочу, чтобы vim использовал этот файл тегов, который включает теги для файлов в dir1 и dir2. Когда я редактирую file1, VIM не может найти правильный файл тегов.
У меня есть следующие настройки в.vimrc:
set tags=tags;/
Есть ли способ сохранить эту файловую структуру без явного указания VIM абсолютного пути к тегам?
3 ответа
Вы можете добавить к тому же ctags другие теги, например, если вы хотите ctag все внутри dir1, вы должны выполнить:
ctags -R *
и если вы хотите добавить другие теги из dir two:
ctags -R -a ~/path/to/dir2/*
-а для добавления.
Теперь я делаю так, чтобы мои ctags всегда были вне зависимости от того, где я открываю vim, - добавляю эту строку в мой .vimrc
:
set tags+=./tags;$HOME
он будет искать теги в текущем каталоге и будет рекурсивно переходить в вашу домашнюю папку, если вы хотите, чтобы он выполнял поиск до тех пор, пока корневая папка или менее не изменилась $HOME
за /
или же /path/to/root/project/
С этой строкой в моем ~/.vimrc
и похожий макет, как у вас, tags
связанные функции (:ts
, <C-]>
и т. д.) используйте то же самое tags
файл, расположенный в корне dir
наряду с dir1
а также dir2
,
set tags=./tags,tags;$HOME
tags
Сначала файл ищется в каталоге текущего файла, затем в cwd
, затем вверх, пока не достигнет $HOME
,
Что значит :echo tagfiles()
скажи, когда ты редактируешь file1
? Здесь сказано ['/home/romainl/Desktop/dir0/tags']
,
РЕДАКТИРОВАТЬ
Создание символической ссылки, похоже, ничего не меняет.
EndEdit
Я думаю, что это просто вопрос того, чтобы быть в правильном каталоге. Когда вы начнете работать в этом проекте, используйте :cd /dir
чтобы попасть в каталог с файлом тегов, и убедитесь, что autochdir
опция отключена. Затем, когда вы редактируете файл внутри dir2, рабочий каталог все равно будет dir, и он все равно найдет тот же файл тегов.
Если, с другой стороны, вы в конечном итоге выберете dir/dir2 в качестве рабочего каталога, это фактически означает, что вы находитесь в /otherdir, поэтому, когда Vim ищет файл тегов оттуда, он не может найти его в этом каталоге. или в / . Я подозреваю, что это то, что происходит с вами сейчас.
Вы можете видеть, в каком каталоге вы находитесь в любое время с помощью :pwd
Команда, как в оболочке.