Ответ 1
Вы можете использовать read, как в следующем:
:read !ls
Очевидно, вам следует изменить ls
с помощью вашей команды. Если вы хотите открыть новую вкладку, добавьте tabnew с помощью строки в следующую команду:
:tabnew|read !ls
Я редактирую XML файл в Vim, а затем хочу преобразовать его в текстовый файл с xsltproc, который по умолчанию выводит на stdout (что-то вроде:! xsltproc TXTRULE.XSL%). Можно ли перенаправить этот вывод xsltproc на новую вкладку в Vim без создания промежуточных файлов?
(Я пробовал читать: help redir и некоторые заметки wiki, но все равно не могу получить его. Было бы приветствовать какой-то простой пример. )
Вы можете использовать read, как в следующем:
:read !ls
Очевидно, вам следует изменить ls
с помощью вашей команды. Если вы хотите открыть новую вкладку, добавьте tabnew с помощью строки в следующую команду:
:tabnew|read !ls
Чтобы расширить на lucapette answer, вы можете создать такую карту:
:map ,x :tabnew<Bar>read !xsltproc TXTRULE.XSL #
#
расширяется до ранее открытого буфера, который является файлом, который вы редактировали, а %
будет расширяться до нового буфера, открытого :tabnew
.
<Bar>
должен использоваться вместо |
, потому что в противном случае команда :map
заканчивается на |
.
Я использую следующее для просмотра моих программных выходов (очень полезно для make файла с правилом make-запуска)
Он открывает новую вкладку рядом с текущей, только если она еще не была открыта для этой цели:
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>