2010-01-21 2 views
2

Я хочу выполнить команду автоматически после cd'ing в новый каталог из vim. Например, я открываю Gvim и запуска:vim command после cd

:cd ~/src/player 

Я хотел бы Vim в этот момент автоматически источник файла, который находится в этой директории.

Возможно ли это?

+0

Какова цель этого? Вам нужны конкретные настройки для файлов в этом каталоге? Вам нужны конкретные настройки, если рабочий каталог Vim '~/src/player', даже если вы не редактируете файлы в этом каталоге? Легче дать правильный ответ, если вы расскажете о том, что вы хотите, а не о том, как вы думаете, что это должно произойти. – jamessan

ответ

4

Вы можете написать псевдоним, что в вашем .vimrc:

command -nargs=1 Mycd call MyCd(<args>) 
function MyCd(path) 
    cd a:path 
    e somefile.ext 
endfunction 

Тогда просто напечатайте:

:Mycd /some/path/ 
+0

Команды пользователя должны начинаться с заглавной буквы. – jamessan

+0

Упс, спасибо! –

+0

Я надеялся на какое-то событие автокоманды, например BufRead и друзей, но похоже, что в настоящее время ничего подобного нет. Так и будет! Благодарю. – devguydavid

0

Не совсем то, что вы просите, но

 
:au BufEnter , BufFilePost * lc <afile>:h 

сделает так, что всякий раз, когда вы открываете новый файл (например, с :e ~/src/player/README), вы автоматически меняете directo до ~/src/player. Если вы открываете несколько буферов, вы будете заменены на каталог, содержащий локальный буфер, когда будете меняться между ними, и если вы откроете несколько вкладок, они останутся в соответствующих каталогах.

+0

Я использовал этот подход раньше, и мне понравилось. Однако, вернувшись к тому, чтобы оставаться в каталоге верхнего уровня, что я делаю. Есть много вещей, к которым я привык, и теперь настроен для работы из каталога верхнего уровня (custom makeprg, grep и т. Д.) И, следовательно, на самом деле не хочу часто менять каталоги. В любом случае, спасибо. – devguydavid