Abra a saída de um comando shell em um painel dividido

18

Considere qualquer linguagem de programação interpretada.

Eu posso executar o script atualmente aberto usando ! interpreter % e usar a tecla return para retornar ao vim após a conclusão da execução.

É de alguma forma possível não substituir a janela atual pela saída do comando shell executado, mas abrir a saída em um novo painel dividido? Eu ainda gostaria de ver meu código-fonte durante a execução do meu script.

Eu tentei :split ! interpreter % , mas não funcionou.

Existe um caminho? Eu estou usando o vim 7.3.

    
por muffel 24.01.2015 / 17:16

2 respostas

21

Com :! , o comando externo é executado em um shell e a saída fugaz não é capturada dentro do Vim; você apenas vê o que é impresso no terminal, então o controle retorna ao Vim após o comando externo terminar.

Para manter a saída, você precisa lê-la em um buffer do Vim . Para isso, há o comando :read! . Para abrir um novo buffer scratch , combine isso com :new :

:new | 0read ! <command>

Se você quiser passar o nome do arquivo do buffer atual ( % ) para o comando externo, use :execute , para que ele já seja avaliado no buffer atual:

:execute 'new | 0read ! interpreter' expand('%')

Ou você usa o fato de que com um novo buffer, o anterior se torna o alternativo e usa # em vez de % :

:new | 0read ! interpreter #

Livre-se do buffer de rascunho com :bdelete! .

Se você quiser ver a saída de forma assíncrona enquanto ela é executada, você precisa de um multiplexador externo ou um plugin, como mencionado na resposta @chaos.

    
por 24.01.2015 / 18:55
2

Até onde eu sei, você não pode fazer isso em vim . Mas use um multiplexador de terminal como screen para isso. Antes de abrir um vim, inicie o multiplexador:

screen

Em seguida, pressione ctrl - a S para horitzontal e ctrl - a | para uma tela vertical derramada.

Agora, abra um arquivo em vim em uma das telas divididas. E pule para a outra tela usando ctrl - a tab . Observe que, na segunda tela, você primeiro tem que abrir uma nova tela ( ctrl - a c ) antes de poder usá-la.

Na tela com o vim você pode editar o arquivo e na outra tela você pode executá-lo e ver as mensagens e o código permanentemente.

Aqui, uma referência rápida para screen .

    
por 24.01.2015 / 18:00

Tags