Vim:基于字符串的来源

时间:2009-05-08 17:17:37

标签: vim

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

如果我要在shell中执行此操作,我会执行以下操作:

source ${HOME}/.vim/myscript_${FOO}.vim

我如何在Vim中完成?

2 个答案:

答案 0 :(得分:36)

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

exec "source " . $HOME . "/.vim/myscript_" . l:foo . ".vim"

(这里的l:foo是一个在函数中使用局部变量的例子。)


<强> 编辑:

但实际上exec在这个特定情况下是过度的。作为横行shows here,OPs任务可以直接用:

完成
source $HOME/.vim/myscript_$FOO.vim

虽然vim不允许我们在${...}中整齐地包装变量名称,就像我们在shell中一样,在这种情况下,我们很幸运HOME/FOO终止.

{1}}

通常,如果您想通过非终止字符跟随其中一个变量,则需要exec 。例如:

exec "source " . $BAR . "_script.vim"

会插入BAR变量,而以下内容会尝试查找名为BAR_script的变量:

source $BAR_script.vim       " Possibly not what you wanted!

答案 1 :(得分:4)

只需:source对我有用:

% export MYPATH='a/b/c'
% mkdir -p $MYPATH
% export MYFILE='temp.vim'
% cat > $MYPATH/$MYFILE
echo 'hello world'
^D
% vim
:source $MYPATH/$MYFILE
hello world

如果您想要自动获取某些vim脚本,只需将它们粘贴到~/.vim/plugin/目录中,它们就会为您加载,而无需手动执行。

:help expand-environment-var(我通过:help environment完成并完成标签到第一个可能的结果)

             *:set_env* *expand-env* *expand-environment-var*
    Environment variables in specific string options will be expanded.  If the
    environment variable exists the '$' and the following environment variable
    name is replaced with its value.  If it does not exist the '$' and the name
    are not modified.  Any non-id character (not a letter, digit or '_') may
    follow the environment variable name.  That character and what follows is
    appended to the value of the environment variable.  Examples: >
       :set term=$TERM.new
       :set path=/usr/$INCLUDE,$HOME/include,.
    When adding or removing a string from an option with ":set opt-=val" or ":set
    opt+=val" the expansion is done before the adding or removing.

我倾向于发现vim内置的帮助比其他任何东西都更有用,但确实需要一段时间才能知道要查找的内容。