É possível ter a saída de a:! comando em uma divisão, em vez de toda a janela?

11

Se eu tiver uma sessão vim com duas divisões, quando executo um :!comando, o resultado será mostrado em toda a janela. É possível exibir a saída apenas na divisão ativa?

drs
fonte
2
Não, isso não é possível. A saída se :!é mostrada na linha de comando, da qual existe apenas uma, e pode estar apenas na parte inferior da tela. O melhor que posso pensar é criar um novo buffer /: split sob o atual ...
Martin Tournoij
@Carpetsmoker, para mim, a saída de :!não vai para a linha de comando. Em vez disso, a sessão do vim desaparece e a janela inteira do terminal mostra a saída do terminal, incluindo o que foi impresso antes de vimser chamado.
drs
1
Talvez isso se deva ao terminal que você usa e / ou à TERMconfiguração?
Martin Tournoij
Esta diferença tem a ver com altscreen (em screen) ou de ecrã alternada (em tmux).
Tommcdo

Respostas:

8

Você pode usar este comando:

:new | 0read ! command

Isso abrirá uma nova divisão e coloca a saída do comando nessa divisão ( embora não esteja na divisão atualmente ativa, como você mencionou ).

new - cria uma nova divisão

read - para obter a saída do comando

comando - comando real

meain
fonte
6

Você pode fazer um comando para fazer exatamente isso:

  1. Abra uma nova divisão (ou guia)
  2. Execute um comando e mostre os resultados nessa divisão (ou guia)

O comando seria algo como isto:

:Rsplit command

ou

:Rtab command

No seu .vimrcvocê pode escrever isto:

" 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>"

Você pode descobrir como criar seus próprios comandos com :help :command.

Lucas Gabriel Sánchez
fonte
1

Isso não será possível. Você terá que dividir sua tela com outra ferramenta como tmux (IIRC), tela, ...

Se você não precisar interagir com o programa executado, poderá importar os resultados diretamente em qualquer janela (no sentido do vim :h windows) que desejar :r!command line.:h :r!

Luc Hermitte
fonte