我有一个调用外部 shell 脚本并将输出读入当前缓冲区的 Vim 脚本。它在 Unix 系统中运行良好。我正在尝试使脚本与操作系统无关,因此我希望它也适用于 Windows 用户。这是脚本中的相关行:
:exe ":0r !$HOME/bin/shell_script"
根据 Vim 的文档,$HOME
也应该可以很好地为 Windows 用户翻译。在命令模式下在 Win XP 上使用 gvim,做
:echo $HOME
确实会生成“C:\Documents and Settings\my_user”。
但是,我的 Vim 脚本(针对反斜杠进行了调整)在 Windows 机器上失败,并在 DOS cmd.exe 窗口中显示一条消息说
$HOME\bin\shell_script" not found.
换句话说,在将 $HOME
传递给 cmd.exe 之前,Vim 似乎没有扩展它的值。
我也不能使用 %APPDATA%
因为 Vim 将 %
解释为当前文件并将文件名预先/附加到 APPDATA
.奇怪的是 Vim 确实扩展了 %
但没有扩展 $HOME
。
如何正确展开 $HOME
?是因为我在 vim 脚本中使用了 exe
吗?
最佳答案
你不需要 !
来读取文件。
:exe ":0r $HOME/bin/shell_script"
或者读取windows下的type
命令(比如linux下的cat
):
:exe '0r !type "'. $HOME . '\bin\shell_script"'
注意:
type
在windows shell中执行,所以路径中需要\
(反斜杠)- 如果
$HOME
包含space
,则需要"
(双引号)来保留space< 的字面值
s
关于windows - 如何在 Vim 脚本中使用 Windows 环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9346318/