我想将我的vim
目录重新组织成这样:
- dotfiles
|- vim
| |- config
| | |- global
| | | |- basic.vim
| | | |...
| | |- plugins
| | | |- ctrl-p.vim
| | | |...
| | |- functions
| | | |...
| | |...
| |- bootstrap.vimrc
在$HOME/.vimrc
:
if isdirectory(expand('$HOME/dotfiles/vim'))
source $HOME/dotfiles/vim/bootstrap.vimrc
endif
我的问题是,如何将所有 Vim 配置文件包含在global
、、plugins
文件夹中functions
?
我找到了这样的功能:
function! SourceConfig()
let file_list = split(globpath('$HOME/dotfiles/vim/', '.vim'), '\n')
for file in file_list
execute('source '.file)
endfor
endfunction
call sourceConfig()
但是我想根据指定的加载文件夹,如何修改func,让它globpath
变成一个array
或者什么的,像下面这样。
let $path=[global, plugins, functions] // this will be source files in turn.
function! SourceConfig()
let file_list = split(globpath($path, '.vim'), '\n')
for file in file_list
execute('source '.file)
endfor
endfunction
call sourceConfig()
使用 before/plugin 和 after/plugin?
答案1
由于globpath()
采用逗号分隔的目录列表,您可以像这样构建位置(我以重复的原始方式进行此操作,因为您似乎不太精通 Vimscript):
function! sourceConfig()
let path = $HOME . '/dotfiles/vim/config/global'
let path .= ',' . $HOME . '/dotfiles/vim/config/plugins'
let path .= ',' . $HOME . '/dotfiles/vim/config/functions'
然后,可以传递此列表来生成脚本文件列表,然后可以获取该脚本文件(请注意,您的语法是错误的,建议进行正确的转义):
let file_list = split(globpath(path, '*.vim'), '\n')
for file in file_list
execute 'source' fnameescape(file)
endfor
endfunction
方法批评
你没有提到重组的动机,但我会建议坚持使用默认配置布局,要么是“全部在 .vim 下”,要么是“每个插件单独的捆绑目录”。
例如,您列出的方法不能处理ft插件或者自动加载,我确信您的某些插件具有/将会具有。