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 Команда, как в оболочке.

Другие вопросы по тегам