我有一个Vim脚本,调用外部shell脚本并将输出读入当前缓冲区。在Unix系统中它工作得很好。我正在尝试使脚本跨操作系统可用,所以我希望它也适用于Windows用户。以下是脚本中相关的行:
:exe ":0r !$HOME/bin/shell_script"
根据Vim的文档,
$HOME
应该对于Windows用户也可以正常使用。在Windows XP上使用gvim命令模式时,执行以下操作::echo $HOME
确实会产生"C:\Documents and Settings\my_user"。
然而,我的Vim脚本(已调整反斜杠)在Windows机器上失败,并在DOS cmd.exe窗口中显示消息:
$HOME\bin\shell_script"未找到。
换句话说,在将值传递给cmd.exe之前,Vim似乎没有扩展$HOME
的值。
我也不能使用%APPDATA%
,因为Vim将%
解释为当前文件,并将文件名预/附加到APPDATA
。奇怪的是,Vim 确实扩展%
,但不扩展$HOME
。
我如何正确扩展$HOME
?这是因为我在Vim脚本中使用了exe
吗?