如何将stdout输出重定向到新的Vim选项卡?

时间:2011-11-27 16:46:03

标签: vim

我正在Vim中编辑一个XML文件,然后我想用xsltproc将它转换为纯文本文件,默认输出为stdout(类似于:!xsltproc TXTRULE.XSL%)。是否可以将该xsltproc输出重定向到Vim中的新选项卡而不创建任何中间文件?

(我试过阅读:帮助redir和some wiki notes,但仍然无法得到它。对于某种简单的例子会很有用。)

3 个答案:

答案 0 :(得分:24)

您可以使用read,如下所示:

:read !ls

显然你应该用你的命令改变ls。如果要打开一个新选项卡,请在tabnew前添加一个条形图,如:

:tabnew|read !ls

答案 1 :(得分:4)

要展开lucapette的answer,你可以创建一个这样的地图:

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

#扩展到之前打开的缓冲区,即您正在编辑的文件,而%将扩展为:tabnew打开的新缓冲区。

必须使用

<Bar>代替|,否则,:map命令将以|结束。

答案 2 :(得分:0)

我正在使用以下内容查看我的程序输出(对于带有make run规则的makefile非常有用)

只有当之前尚未打开一个新选项卡时,它才会打开一个新选项卡:

fu! RedirStdoutNewTabSingle(cmd)
  let a:newt= expand('%:p') . ".out.tmp"
  tabnext
  if expand('%:p') != a:newt
    tabprevious
    exec "tabnew" . a:newt
  else
    exec "%d"
  endif
  exec 'silent r !' . a:cmd
  set nomodified
endfunc

au FileType xml noremap <buffer> <F6> :call RedirStdoutNewTabSingle("xsltproc")<CR>