windows - 如何在 Vim 脚本中使用 Windows 环境变量?

标签 windows vim environment

我有一个调用外部 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/

相关文章:

ruby-on-rails - 在不同环境中工作方式不同的 Rails 辅助方法

java - 如何将环境与 JClouds-Chef API 合并?

windows - 如何在 Windows 的脚本中调用 Matlab?

javascript - Cordova 插件 x509store

events - 在 NERDtree 上导航时如何更改 vim 工作目录

ruby - 使用 ruby​​(或其他语言)的全屏终端应用程序

php - mysqli_fetch_assoc()需要参数/调用成员函数bind_param()错误。如何获取并修复实际的mysql错误?

c# - 这是确定操作系统架构的好方法吗?

java - 添加图标和分隔符到 Windows XP 右键单击​​上下文菜单

vim 删除向后技巧