Если весь ваш смысл состоит в том, чтобы добраться до правильного файла «тегов», то это можно сделать проще:
set tags=./tags,tags;$HOME/programming,$HOME/programming/your/global/tags
Опция tags
принимает запятую (илипробел) разделенный список записей.В моем примере у меня есть следующие записи:
./tags
это означает, что он должен сначала искать tags
-файл в текущем каталоге tags;$HOME/programming
это означает, что lookдля tags
-файла из текущего каталога до $HOME/programming
(это то, что делает точка с запятой, см. поиск файлов ).Если вы не укажете «stop» -каталог с помощью точки с запятой, он будет искать в корневом каталоге /
$HOME/programming/your/global/tags
и, наконец, это файл тегов, на который ссылается абсолютное имя файла
Мой пример, вероятно, излишний для вашей цели из вашего описания, вам нужно только это:
set tags=tags;$HOME/programming
Но если вам действительно нужно изменить рабочий каталог, вы можете добавить что-то вроде этого (изменитьlcd
до cd
, если необходимо) на ваш .vimrc:
au BufNewFile,BufRead *.js execute ":lcd " . fnamemodify(findfile("tags", ".;"), ":p:h")