I have a Vim script that calls an external shell script and reads the output into the current buffer. It works fine in Unix systems. I'm trying to make the script OS-agnostic, so I want it to work for Windows users too. Here's the relevant line from the script:

:exe ":0r !$HOME/bin/shell_script"

According to Vim's docs, $HOME should translate fine for Windows users too. Using gvim on Win XP in command mode, doing

:echo $HOME

does indeed produce "C:\Documents and Settings\my_user".

However, my Vim script (adjusted for backslashes) fails on the Windows machine with a message in the DOS cmd.exe window saying

$HOME\bin\shell_script" not found.

In other words, Vim appears not to be expanding the value of $HOME before passing it to cmd.exe.

I can't use %APPDATA% either because Vim interprets % as the current file and pre/appends the file name to APPDATA. Weird that Vim does expand % but doesn't expand $HOME.

How do I get $HOME expanded correctly? Is it because I'm using exe in the vim script?

Edit
Report