Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to redirect stdout output to a new Vim tab?

Tags:

I'm editing an XML file in Vim, and then I want to transform it a plain-text file with xsltproc, which by default outputs to a stdout (something like : !xsltproc TXTRULE.XSL %). Is it possible to redirect that xsltproc output to a new tab in Vim without creating any intermediate files?

(I've tried to read :help redir and some wiki notes, but still can't get it. would be greateful for some kind of simple example.)

like image 395
A S Avatar asked Nov 27 '11 16:11

A S


2 Answers

You can use read like in the following:

:read !ls

Obviously you should change ls with your command. If you want to open a new tab prepend tabnew with a bar to the command like:

:tabnew|read !ls
like image 69
lucapette Avatar answered Sep 28 '22 21:09

lucapette


To expand on lucapette's answer, you could create a map like this:

:map ,x :tabnew<Bar>read !xsltproc TXTRULE.XSL #

# expands to the previously opened buffer, which is the file you were editing, while % would expand to the new buffer opened by :tabnew.

<Bar> has to be used instead of |, because otherwise, the :map command would end at the |.

like image 31
daniel kullmann Avatar answered Sep 28 '22 23:09

daniel kullmann