Vim:基于字符串的来源

Mag*_*nus 17 vim

我似乎无法在网上的众多Vim脚本教程中找到答案.我想要做的是从环境变量构造脚本的文件名,然后来源它.我想在Vim中做到这一点.

如果我要在shell中执行它,我会做这样的事情:

source ${HOME}/.vim/myscript_${FOO}.vim
Run Code Online (Sandbox Code Playgroud)

我怎么在Vim中做到这一点?

joe*_*dle 37

您可以构建一个字符串,然后使用execute命令:

exec "source " . $HOME . "/.vim/myscript_" . l:foo . ".vim"
Run Code Online (Sandbox Code Playgroud)

(这l:foo是在函数中使用局部变量的示例.)


编辑:

但实际上exec在这个具体案例中是矫枉过正.正如此处显示的那样,OPs任务可以直接完成:

source $HOME/.vim/myscript_$FOO.vim
Run Code Online (Sandbox Code Playgroud)

虽然Vim并不让我们整齐地包裹变量名${...}状,我们可以在shell,在这种情况下,我们是幸运的,HOME被终止/FOO通过.

在一般情况下,exec 如果你想追随由非终止字符的变量之一是必要的.例如:

exec "source " . $BAR . "_script.vim"
Run Code Online (Sandbox Code Playgroud)

将插入BAR变量,而以下将尝试找到一个名为的变量BAR_script:

source $BAR_script.vim       " Possibly not what you wanted!
Run Code Online (Sandbox Code Playgroud)