I found this note in the 'vim' release notes:

When using "cmd | vim -", stdin is not a terminal.  This gave problems with
GPM (Linux console mouse) and when executing external commands.  Now close
stdin and re-open it as a copy of stderr.

The source for version 6 does this:

    if (read_stdin)
        /* Use stderr for stdin, makes shell commands work. */

I don't why this isn't a problem on Linux, too, but it is a problem on
Solaris 8.  The native Sun version of 'vi' doesn't have this problem.

The quickest fix for this is to only redirect stdout to /dev/null 
for the test

  if echo 'r /nonexist-file
q' | ex > /dev/null 2>&1

Robert Elz noted that on NetBSD, the output was sent to stdout.  The
Sun version of 'vi' and 'vim 6.0' do this as well.


Reply via email to