2010-12-21 57 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