PortableApps在使用其应用时会自动添加environment variables。但是,在使用gVimPortable访问名称中带有特殊字符的变量时,我会收到错误。
例如:执行时
:echo $PortableApps\.comDocuments
或
:echo $PortableApps.comDocuments
我收到以下错误:
E15: Invalid expression: \.comDocuments
和
E121: Undefined variable: comDocuments
E15: Invalid expression: $PortableApps.comDocuments
当我做
时,我遇到了类似的问题:echo $PAL:Drive
PortableApps环境变量似乎都在那里。我做了一个:
:echo $<C-D>
他们被列出。
如何访问这些变量?
答案 0 :(得分:0)
对于Vim,环境变量只能包含字母,数字和下划线。来自:h expand-env
:
… 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,.
因此,使用类似set something=$PortableApps.comDocuments
的表达式,Vim仅将$PortableApps
视为环境变量 - .comDocuments
是附加到其上的字符串。对于echo $PortableApps.comDocuments
,.
是string concatenation operator,因此Vim会尝试取值
$PortableApps
和变量comDocuments
并加入它们。使用echo $PortableApps\.comDocuments
,它会看到环境变量$PortableApps
,然后是它无法理解的内容:\.comDocuments
。
如果您可以访问Vim的Python或Perl接口,则可以使用它们。例如,在使用:
启动Vim之后env foo.bar=blah vim
以下两项都给出了输出blah
:
:perl VIM::Msg($ENV{"foo.bar"})
:python import os; print os.environ['foo.bar']
例如,在Python中,您可以将环境变量分配给Vim变量:
:python vim.vars['foobar'] = os.environ['foo.bar']
然后,您可以像任何其他Vim变量一样使用foobar
:
:echo foobar
blah
当然,在Windows上,您必须安装Python或Perl才能使用它。