On Wednesday, June 20, 2012 12:48:45 AM UTC-5, Christian Brabandt wrote:
> 
> You need to set shellquote.
> 

Are you sure?

gvim -N -u NONE -i NONE
:set shellxquote= shellquote=\" shelltemp
:.!echo "test|moretest"

shell returned 255

line becomes: 'moretest""' is not recognized as an internal or external 
command, operable program or batch file.

(various experiments with cmd /c and cmd /k still won't let me see the executed 
command, and give some error or another)

:set shellxquote=( shellquote=\"
:.!echo "test|moretest"
shell returned 255
E485: Can't read file C:\tmp\VIo2E3.tmp

Line remains blank.

Oh, here we go, with shellxquote=( and shellquote=\":
:.!cmd /c "echo "test|moretest""
No errors, line becomes "test|moretest" as intended.

Note with shellxquote unset, this still does not work.

However, my original use case, trying to filter through Perl, does not work if 
we need to run it through cmd /c first. It replaces the line with a blank line 
instead. I'm pretty sure cmd /c doesn't take input on stdin and thus can't act 
as an actual filter.

If there is a way to actually accomplish filtering through a program with '|' 
as an argument on Windows gvim, I'd love to know. If there's not a way to do 
so, I think there needs to be. 'shelltemp' probably should not default to off, 
since according to :help 'shelltemp' that will prevent 
Filter\(Read\|Write\)\(Pre\|Post\) autocmds from triggering, and also 
potentially cause encoding problems.

Plus, unsetting shelltemp seems like a hacky workaround, not a real solution 
for building the wrong command line.

-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Reply via email to