Как перенаправить вывод stdout на новую вкладку Vim? - PullRequest
17 голосов
/ 27 ноября 2011

Я редактирую XML-файл в Vim, а затем хочу преобразовать его в простой текстовый файл с помощью xsltproc, который по умолчанию выводит в стандартный вывод (что-то вроде:! Xsltproc TXTRULE.XSL%).Можно ли перенаправить вывод xsltproc на новую вкладку в Vim без создания каких-либо промежуточных файлов?

(я пытался прочитать: help redir и некоторые заметки вики , но все еще могуне понимаю. был бы благодарен за какой-то простой пример.)

Ответы [ 3 ]

24 голосов
/ 27 ноября 2011

Вы можете использовать read , как показано ниже:

:read !ls

Очевидно, вы должны изменить ls с помощью вашей команды.Если вы хотите открыть новую вкладку, добавьте tabnew со строкой к команде, например:

:tabnew|read !ls
4 голосов
/ 28 ноября 2011

Чтобы раскрыть ответ от lucapette, вы можете создать карту следующим образом:

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

# расширяется до ранее открытого буфера, который является файлом, который вы редактировали,в то время как % расширится до нового буфера, открытого :tabnew. * Вместо | следует использовать

<Bar>, так как в противном случае команда :map будет заканчиваться на |.

0 голосов

Я использую следующее для просмотра результатов моей программы (очень полезно для make-файла с правилом make run)

Открывает новую вкладку рядом с текущей, только если она ранее не была открыта для этой цели:

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...