2012-12-13 8 views
7

Quando digito in qualcosa di terminale comeCome modificare automaticamente il percorso corrente in Vim?

mvim ./path/to/my/project 

Vim apre questa directory del progetto, nel mio NERDTree posso visualizzare i file, ma quando provo a fare funzionare qualche comando CLI, come

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

si verifica , che il mio percorso corrente è i miei utenti home directory

quindi se voglio creare il file nel mio progetto dir, devo digitare il percorso completo come

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

E 'possibile in qualche modo cambiare automaticamente la directory dopo l'avvio di vim?

+0

possibile duplicato di [Come impostare il percorso corretto per un file in VIM?] (Http://stackoverflow.com/questions/12022142/how-to-set-the-correct -path-for-a-file-in-vim) –

+0

Penso di no, autochdir non risolve il mio problema. Voglio cambiare dir alla radice del mio progetto, e nient'altro. –

+0

Il file ': pwd' è la directory in cui hai invocato Vim. Oppure '~' se avvii semplicemente GVim/MacVim. – romainl

risposta

4

Io uso questo nel mio vimrc:

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

Per il vostro particolare caso d'uso si potrebbe provare aggancio qualcosa sull'evento VimEnter. Ad esempio, prova a mettere questo nel vostro vimrc:

autocmd VimEnter * cd %:p:h 

Poi, quando si richiama Vim con $ mvim path/to/my/project/some/file Vim automaticamente :cd nella directory file è in

Per questo a lavorare con le directory si dovrà. aggiungere un po 'di logica al comando automatico, ad es

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

Puoi migliorare tu stesso!

3

Il modo migliore per risolvere questo dipende dal vostro caso d'uso esatto. Sono parziale a :set autochdir, ma se si desidera impostare la directory di lavoro sulla radice del progetto, utilizzare uno dei plug-in locali vimrc 011 (io uso localrc.vim - Enable configuration file of each directory), creare un file locale .vimrc in ciascuna delle radici del progetto con

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

in esso. Quindi, indipendentemente dal file all'interno della gerarchia di progetto aperta, la directory di lavoro sarà sempre impostata sulla radice del progetto.

0

in_vimrc

au BufEnter * silent! lcd %:p:h