vim set рабочий каталог - PullRequest
       4

vim set рабочий каталог

6 голосов
/ 09 октября 2011

Когда я переключаю буферы в Vim (используя: bn и: bp), я хочу, чтобы он автоматически устанавливал рабочий каталог, НО не быть каталогом открытого файла.Я хочу, чтобы Vim осуществлял рекурсивный поиск вверх файла, называемого «тегами», и, когда он находит этот файл, установите рабочий каталог в каталог с файлом «тегов».

Пример:

:e ~/programming/projects/foobar/src/js/scripts.js

Как видите, "foobar" является своего рода "корнем проекта".Давайте предположим, что файл "tags" находится в каталоге foobar.Теперь Vim должен смотреть в "js", но там нет файла тегов.Тогда он должен выглядеть в "src", там нет файла тегов.Затем он должен заглянуть в "foobar" и найти файл "tags", а затем сделать:

:cd ~/programming/projects/foobar/

Есть ли простой способ сделать это?:)

Ответы [ 2 ]

4 голосов
/ 09 октября 2011

Если весь ваш смысл состоит в том, чтобы добраться до правильного файла «тегов», то это можно сделать проще:

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")
0 голосов
/ 09 октября 2011

Отказ от ответственности: я автор упомянутого плагина.

Я думаю, вы могли бы использовать маленький codepath.vim .Я написал это, потому что мне нужна была небольшая функция, которая помогла бы мне добраться до корня моего проекта.Плагин предполагает, что у вас есть папка со всем вашим кодом.Что-то вроде $HOME/code.Ну, это обеспечивает следующую функцию:

codepath#path()

Я использую в комбинации с плагинами, такими как NERDTree или command-t Так что я могу открыть окно NERDTree в корне моего проекта.Это действительно маленький плагин, но я использую его все время.

...