2010-03-11 37 views
0

我最近VIM轉換不同的品牌Vim的:多文件編輯 - 具有不同的份

我在vim愛:make命令,並廣泛使用它(從花哨的IDE像Eclipse)。不過我也喜歡編輯多個項目(具有獨立的makefile。)

所以平時要編輯多個項目,我會做

pushd project1 
vim project1.cpp 
[suspend signal] 
pushd ../project2 
vim project2.cpp 

,現在我可以ctrl+z即中止信號兩個項目之間切換,和fg

當這成爲一個問題是當我想在另一個環境中打開一個項目,所以我可以複製/粘貼。所以,如果不是在上面我

pushd project1 
vim project1.cpp 
:vsp ../project2/project2.cpp 

我可以在同一Vim進程同時編輯兩個,但我不能有效地建立一個或另一個與:make命令,它只會建立項目1.

有沒有人有某種方案可以讓他們兩全其美:能夠同時進行編輯,同時仍然可以使用:make命令通過同一個vim進程構建多個項目?

回答

2

你想爲每個執行相同的make命令嗎?所以問題只是當前目錄?您可以使用:lcd更改僅用於當前窗口的目錄,以便它可以在每個目錄的相應目錄中運行。爲了使它更加自動化,你可以設置一個自動命令(我認爲在BufWinEnter上),當你創建分割窗口來運行:lcd expand('%:h')時,或者如果你不想總是這樣做,就只需要映射一個鍵。

(你也可以映射一個鍵/爲lcdmake的組合創建自定義命令,可能節省的擊鍵但隨後不必要cd'ing各佔了。倒不是說需要長時間。)

附:我詢問make命令是否相同的原因是,您實際上可以在本地設置makeprg和其他關聯的選項(使用:setlocal而不是:set)。

+0

真棒這就是我一直在尋找! – ldog 2010-03-11 20:25:59

1

vim:make命令實際上只是執行當前目錄中配置爲makeprg的程序(默認爲make)。

通過在項目目錄中每開始一個vim進程,您都會間接地爲該vim會話設置當前目錄,但當然您可以更改正在運行的會話中的當前目錄。當你在project1/開始,你可以簡單cdproject2/

:cd project2 
:make 

構建它裏面vim還是一樣,如果你只是要改變什麼的目錄爲當前窗口,做什麼Jefromi表明

:lcd project2 
:make 

有插件說,他們更容易(this似乎很受歡迎),但我從來沒有需要使用它們。