2010-12-21 59 views
23

所有VIM文件,我有我的.vimrc分成幾個文件,並將它們放置到~/vimfiles/vimrc.d/如何源目錄

目前我使用確切的名稱源目錄中每個文件:

source ~/vimfiles/vimrc.d/file1.vim 
source ~/vimfiles/vimrc.d/file2.vim 

如何使一個循環thourgh在該目錄中的所有文件,所以我只可能做這樣的循環中我的.vimrc:

for file in ~/vimfiles/vimrc.d/*.vim 
    source file 
enfor 

回答

34

由於mb14已經說過了,如果你把它們放在~/.vim/plugin裏面,它們會自動採購。有關信息,但是,如果你想源中的所有文件在你的vimrc.d目錄,你可以這樣做(需要一個相對較新的VIM):

for f in split(glob('~/vimfiles/vimrc.d/*.vim'), '\n') 
    exe 'source' f 
endfor 

您還可能有興趣在自動加載機制,在:help 41.15中描述:如果你定義了很多函數,這可以使啓動更快一點,因爲函數只在第一次使用時才加載。

19

你可以把你的文件放在plugins目錄下(〜/ .vim/plugin)。他們將被自動加載。

11

mb14給你最好的答案。你想要自動執行的東西?然後使用標準組織:這裏的插件/子目錄。

否則,:runtime本來是你的朋友:當它的參數不存在

:runtime! vimrc.d/*.vim 
  • :source樹皮而:runtime默默採購什麼。
  • :source可以源只有一個文件,而:runtime!可以輸出任意數量的文件。
  • :source取絕對路徑名或相對於當前目錄的路徑名,而:runtime取相對於'runtimepath'選項的路徑名,只要尊重vim約定,這應該不是問題。
1

從DRAL的例子並沒有爲我工作,我這是怎麼實現的吧:

for fpath in split(globpath('~/.vimrc.d/', '*.vim'), '\n') 
    exe 'source' fpath 
endfor