2012-12-13 19 views
7

Po wpisaniu w coś terminala jakJak automatycznie zmienić bieżącą ścieżkę w Vim?

mvim ./path/to/my/project 

Vim otwiera ten katalog projektu, w moim NERDTree widzę pliki, ale gdy próbuję uruchomić pewne polecenia CLI, jak

:!touch some/file/in/my/project 

Występuje , że moja obecna ścieżka jest moje użytkowników katalogu home

więc jeśli chcesz utworzyć plik w moim projekcie dir, muszę wpisać pełną ścieżkę jak

:!touch ./path/to/my/project/some/file/in/my/project/name 

Czy w jakiś sposób można automatycznie zmienić katalog po uruchomieniu vima?

+0

możliwe duplikat [Jak ustawić prawidłową ścieżkę do pliku w VIM?] (Http://stackoverflow.com/questions/12022142/how-to-set-the-correct -path-for-a-file-in-vim) –

+0

Myślę, że nie, autochdir nie rozwiązuje mojego problemu. Chcę zmienić katalog na katalog główny mojego projektu i nic więcej. –

+0

': pwd' ma być katalogiem, w którym wywołałeś Vima. Lub '~' jeśli właśnie uruchomiłeś GVim/MacVim. – romainl

Odpowiedz

4

Używam tego w moim vimrc:

" Use %% on the command line to expand to the path of the current file 
cabbr <expr> %% expand('%:p:h') 
4

dla konkretnego przypadku użycia można spróbować podpinania coś na razie VimEnter. Na przykład, spróbuj umieścić to w swoim vimrc:

autocmd VimEnter * cd %:p:h 

Wtedy, kiedy wywołać Vima z $ mvim path/to/my/project/some/file Vim automatycznie :cd do katalogu file jest w

do tego, aby pracować z katalogów będzie trzeba. dodaj trochę logiki do autokomendy, np

autocmd VimEnter * exe 'cd '.(isdirectory(expand('%:p')) ? '%:p' : '%:p:h') 

Możesz poprawić to samemu!

3

Jak najlepiej rozwiązać ten problem, zależy od konkretnego przypadku użycia. Jestem stronniczy w stosunku do :set autochdir, ale jeśli chcesz, aby katalog roboczy był ustawiony na katalog główny projektu, używałbym jednej z lokalnych wtyczek vimrc (ja używam localrc.vim - Enable configuration file of each directory), tworzę lokalny plik .vimrc w każdym z korzeni projektu

:cd expand('<sfile>:p:h') 

w nim. Następnie niezależnie od tego, który plik w hierarchii projektu zostanie otwarty, katalog roboczy zawsze będzie ustawiony na katalog główny projektu.

Powiązane problemy