我似乎无法在网上的众多Vim脚本教程中找到答案。我想要做的是从环境变量构造脚本的文件名,然后获取它。我想在Vim中做到这一点。
如果我要在shell中执行此操作,我会执行以下操作:
source ${HOME}/.vim/myscript_${FOO}.vim
我如何在Vim中完成?
答案 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
终止.
通常,如果您想通过非终止字符跟随其中一个变量,则需要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内置的帮助比其他任何东西都更有用,但确实需要一段时间才能知道要查找的内容。