2010-01-21 125 views
2

我想在vim內cd到一個新的目錄後自動執行一個命令。例如,我打開GVIM並運行:cd後的vim命令

:cd ~/src/player 

我想vim的在這一點上自動源中的文件是在該目錄中。

這可能嗎?

+0

這是什麼最終目標?你想要在該目錄下的文件的具體設置?如果Vim的工作目錄是「〜/ src/player」,即使不在該目錄下編輯文件,您是否需要特定設置?如果你描述你想要發生的事情,而不是你認爲應該發生的事情,那麼提供正確的答案會更容易。 – jamessan 2010-01-21 21:03:51

回答

4

你可以寫一個別名,在你的.vimrc:

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

然後只需鍵入:

:Mycd /some/path/ 
+0

用戶命令必須以大寫字母開頭。 – jamessan 2010-01-21 21:09:07

+0

哎呦,謝謝! – 2010-01-21 21:20:56

+0

我一直希望像BufRead和朋友這樣的自動命令事件,但它看起來像目前沒有這樣的東西。所以這會做!謝謝。 – devguydavid 2010-01-22 23:32:28

0

你問不完全是對的,但

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

將使它無論何時你打開一個新文件(例如與:e ~/src/player/README),你會自動更改直接至~/src/player。如果打開多個緩衝區,當您在它們之間切換時,將更改爲包含本地緩衝區的目錄,並且如果打開多個選項卡,它們將保留在其各自的目錄中。

+0

我以前使用過這種方法,並且很喜歡。然而,回到我所做的頂級目錄。我已經習慣了很多東西,並且已經設置了從頂層目錄(自定義makeprg,grep等)開始工作,因此並不真的想要改變目錄。不過謝謝你。 – devguydavid 2010-01-21 21:57:40