Возможно ли иметь вывод:! команда в разделении, а не все окно?

11

Если у меня есть сеанс vim с двумя разделениями, когда я выполняю :!команду, результат отображается во всем окне. Можно ли отображать вывод только на активном сплите?

DRS
источник
2
Нет, это невозможно. Вывод if :!отображается в командной строке, из которой есть только один, и может быть только в нижней части экрана. Лучшее, что я могу придумать, - это создать новый буфер /: split под текущим ...
Martin Tournoij
@Carpetsmoker, для меня вывод :!не идет в командную строку. Вместо этого сеанс vim исчезает, и все окно терминала показывает вывод терминала, включая то, что было напечатано до того, как vimбыл вызван.
DRS
1
Может быть, это связано с используемым вами терминалом и / или TERMнастройкой?
Мартин Турной
Это различие связано с altscreenscreen) или альтернативного экранаtmux).
Tommcdo

Ответы:

8

Вы можете использовать эту команду:

:new | 0read ! command

Это откроет новый сплит и поместит вывод команды в этот сплит ( хотя не в текущий активный сплит, как вы упомянули ).

new - создает новый сплит

читать - чтобы получить вывод команды

команда - фактическая команда

meain
источник
6

Вы можете сделать команду, чтобы сделать это:

  1. Откройте новый сплит (или вкладку)
  2. Запустите команду и покажите результаты в этом разделении (или вкладке)

Команда будет что-то вроде этого:

:Rsplit command

или же

:Rtab command

В ваших .vimrcвы можете написать это:

" execute a command and show its output in a split window
command! -nargs=* -complete=shellcmd Rsplit execute "new | r! <args>"

" execute a command and show its output in a new tab
command! -nargs=* -complete=shellcmd Rtab execute "tabnew | r! <args>"

Вы можете найти, как сделать свои собственные команды с :help :command.

Лукас Габриэль Санчес
источник
1

Это не будет возможным. Вам придется разделить экран с помощью другого инструмента, такого как tmux (IIRC), screen, ...

Если вам не нужно взаимодействовать с исполняемой программой, вы можете импортировать ее результаты непосредственно в любое окно (в смысле vim :h windows), с которым вы хотите :r!command line.:h :r!

Люк Эрмитт
источник