2012-12-13 103 views
7

當我在終端類似如何自動更改Vim中的當前路徑?

mvim ./path/to/my/project 

輸入vim打開這個項目目錄,在我的NERDTree我能看到的文件,但是當我嘗試運行一些CLI命令,像

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

它發生,我當前的路徑是我的用戶的主目錄

所以如果我想在我的項目目錄創建文件,我必須鍵入喜歡

完整路徑

有沒有可能在vim啓動後自動更改dir?

+0

可能重複[如何設置在VIM文件的正確路徑?](http://stackoverflow.com/questions/12022142/how-to-set-the-correct -path-for-a-file-in-vim) –

+0

我想不是,autochdir並沒有解決我的問題。 我想改變我的項目的根目錄,沒有更多。 –

+0

':pwd'應該是你調用Vim的目錄。或者'''如果你只是啓動GVim/MacVim。 – romainl

回答

4

我在vimrc里加入:

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

您的特定使用情況,你可以嘗試對在VimEnter事件掛鉤的東西了。例如,嘗試把這個在你的vimrc:

autocmd VimEnter * cd %:p:h 

然後,當你與$ mvim path/to/my/project/some/file Vim自動:cd調用的Vim到目錄file

對於這個與你將不得不目錄工作。爲自動命令添加一點邏輯,例如

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

你可以自己改進!

3

如何最好的解決這個問題取決於你的確切用例。我偏好:set autochdir,但如果你想將工作目錄設置爲項目根目錄,我會使用本地vimrc插件之一(我使用localrc.vim - Enable configuration file of each directory),在每個項目根目錄中創建一個本地.vimrc文件

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

其中。然後,無論您打開項目層次結構中的哪個文件,工作目錄將始終設置爲項目根目錄。

0

in_vimrc

au BufEnter * silent! lcd %:p:h