动态加载Vim脚本

动态加载Vim脚本,vim,Vim,在我的dotfiles配置中,我试图构建它,以便能够自动加载某个文件夹中的*.vim文件。为此,我将以下代码段添加到我的.vimrc文件中: function PluginConfigs () let vimscripts = split(globpath("$ZSH/vim", '*.vim'), '\n') for i in vimscripts echom i source i endfor endfunction call Plug

在我的dotfiles配置中,我试图构建它,以便能够自动加载某个文件夹中的*.vim文件。为此,我将以下代码段添加到我的
.vimrc
文件中:

function PluginConfigs ()
    let vimscripts = split(globpath("$ZSH/vim", '*.vim'), '\n')
    for i in vimscripts
        echom i
        source i
    endfor
endfunction
call PluginConfigs()
当我现在打开Vim时,我得到以下输出:

/home/davejlong/.dotfiles/vim/dispatch.vim
Error detected while processing function PluginConfigs:
line    4:
E484: Can't open file i
/home/davejlong/.dotfiles/vim/leaders.vim
E484: Can't open file i
/home/davejlong/.dotfiles/vim/matchtagalways.vim
E484: Can't open file i
/home/davejlong/.dotfiles/vim/neocomplete.vim
E484: Can't open file i
Press ENTER or type command to continue

我不确定为什么我不能在
source
命令中使用变量
I

当然,我在发布问题后就找到了答案。我将功能更改为此,它可以工作:

function PluginConfigs ()
    let vimscripts = split(globpath("$ZSH/vim", '*.vim'), '\n')
    for i in vimscripts
        exec ":source " . i
    endfor
endfunction
call PluginConfigs()

您似乎需要使用
exec
从变量中获取文件源。

您可能需要签出
:h:runtime
来获取文件源。您可能还想查看在目录之后使用
,但这并不适用于所有情况。有关
~/.vim
文件结构的更多信息,请参见
:h vimfiles
。您需要
:execute
,只要您想运行包含一些串联文本的命令。