2010-01-31 22 views
15

我在Vim中編寫代碼,而不是IDE。 我的源代碼通常嵌套2-3個目錄深。Vim:e起始目錄?

~/foo$ find 
xyz 
bar/abc 
bar/def 

~/foo$ vim 
// inside of vim 
:e bar/abc 
... some work ... 
:e <-- is there a way I can have this :e start in ~/foo/bar instead of ~/foo ? 

基本上,我想:電子啓動目錄

感謝「上次編輯文件的路徑名」!

回答

12

有很多原因不喜歡autochdir,因爲它搞砸了一些插件,如果你最終這樣做:e ../../../foo.txt你沒有獲得任何東西。正如一個想法試試這個CMAP我敲了

:cnoremap red edit <c-r>=expand("%:h")<cr>/ 

那麼你可以鍵入:紅色,並得到

:e /the/path/to/your/current/files/dir/ 

(編輯:因爲有與紅色啓動命令或者使用的z代替紅)

要擴展該主題,還要查看FuzzyFinder插件和一些自定義映射,以便快速跳轉到您始終正在編輯的常用文件。例如

10個左右的常規文件應該不超過2個按鍵。它有助於如果他們系統地命名

這是我用於Django的想法。

http://code.djangoproject.com/wiki/UsingVimWithDjango#Mappings

+0

這正是我正在尋找的答案。 – anon 2010-01-31 17:32:59

2

對不起,但是vim的:edit命令需要一個相對於vim實例當前工作目錄解釋的路徑。

你有一個:cd命令,你可以使用:cd bar然後工作一段時間,然後:cd ..

希望能幫到一些。

3

要始終將工作目錄更改到當前文件的目錄下我有這個在我的.vimrc

if has("autocmd") 
    autocmd BufEnter * :lcd %:p:h 
endif " has("autocmd") 
+0

太棒了!但是當你用':bd'關閉所有文件時,像這樣的自動命令總是顯示錯誤'E32'。 – Niloct 2011-05-23 15:07:00

11

嘗試autochdir選項。它會自動將當前工作目錄更改爲最近打開或選擇的文件。在.vimrc中:

set autochdir 

欲瞭解更多信息,:help autochdir

0
  • :cd目錄改變
  • :pwd打印當前之一。
1

前段時間我問有關在Vim郵件列表上的問題:http://www.mail-archive.com/[email protected]/msg03266.html也許你會發現在該線程有用的提示。

我測試了很多插件,但由於基於CLI的圖形界面並不是我的口味,所以我只是簡單地使用了標準的vim和幾個配置設置。

由於嘎指出,該行設置工作目錄與您的工作文件:

autocmd BufEnter * lcd %:p:h 

我的另一個技巧是使用wildmenu。當您執行以下操作時,可以更輕鬆地查看當前目錄中的文件概述:e然後TAB。我是一名python程序員,因此最後一行顯示瞭如何隱藏python解釋器吐出的自動生成的文件,但您可以使用它來隱藏java .class文件或c .obj文件或其他任何文件。

set wildmode=list:longest 
set wildignore=*.pyc,*pyo 
+0

我做了類似的事情,但排除了幫助文件:'au BufReadPost * if&ft!='help'|無聲! cd%:p:h | endif' – idbrii 2011-06-15 19:19:59

0

爲什麼不只是:E?探索當前文件的目錄。

:help :E

0

這不正是你想要的,但檢查出NERDTree。

+0

這實在是一個評論,而不是一個答案。有了更多的代表,[你將可以發表評論](http://stackoverflow.com/privileges/comment).. – Jack 2012-11-02 00:38:10

+0

@Jack我知道... – Gaelan 2012-11-02 01:30:14

0

在vim/gVim上我只有cd C:/blah/blah在我的vimrc的頂部。我想它適用於所有平臺。

我個人對每個項目都使用vagrant,所以一張CD就夠了,但我認爲你可以得到vim來使用不同的配置文件,-u flag我想。

或者爲每個項目映射一個按鍵,這樣按下Ctrl + F1確實是cd path/to/project/1而Ctrl + F2確實是cd path/to/project/2也許?

注意:我不使用任何插件