gVim 访问具有特殊字符的环境变量
gVim access environment variable with special characters
PortableApps 自动添加 environment variables when using their apps. However, while using 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>
它们已被列出。
如何访问这些变量?
对于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 才能使用它。
PortableApps 自动添加 environment variables when using their apps. However, while using 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>
它们已被列出。
如何访问这些变量?
对于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 才能使用它。