Execute o comando build a partir do vim, envie a saída para outro painel tmux?

1

Estou usando tmux e Vim como meu IDE de desenvolvimento. Eu tenho 3 painéis abertos no tmux: um para editar o código-fonte, um para depuração e um como um console de exibição.

Do Vim, gostaria de executar o comando make e enviar todas as informações de criação emitidas por ele para o painel do console de exibição. Como eu faria isso?

    
por SLN 11.01.2018 / 22:37

2 respostas

1

Você pode executar qualquer comando shell a partir de um painel e exibir sua saída em outro painel com o comando run-shell . Por exemplo:

tmux run-shell -t 2 "echo hello"

... e "hello" serão impressos no painel número 2. Você pode ver os números do painel com prefix + q .

De vim você deve ser capaz de fazer:

:!tmux run-shell -t 2 "make ..."

Adicione -b para executar o comando em segundo plano.

Atualização: abordando algumas coisas que o @SLN criou em este comentário ...

  • tmux coloca o painel de saída em modo de cópia , o mesmo modo em que você está quando você rola, portanto, desative-o como normalmente ( Ctrl + < kbd> C é um caminho). Observação: você saberá que está nesse modo se vir algo como [12/34] (ou seja, page-num / total-pages) no canto superior direito do painel.
  • Como para o Vim exigindo que você pressione Enter (ou Ctrl + L ) após make ou outro comando ser concluído, isso é apenas como o Vim trabalha com comandos externos ( :!cmd ). Eu não estou ciente de nenhuma maneira de evitar isso, mas eu acredito que você pode pressionar Enter antes que o comando termine e ele retornará assim que estiver pronto. (Isso pode ser dependente do sistema.)

Atualização 2: conheço uma solução alternativa para o segundo item. Se você usar um mapeamento para executar o comando externo, poderá incorporar uma chave de saída. Aqui está um exemplo onde eu estou apenas fazendo ls como meu comando shell:

nnoremap <leader>ls :!ls<CR><C-L>

No modo normal, eu atingi \ls e o comando ls será executado, mas a saída do console será fechada e retornará para vim imediatamente. Talvez você possa se adaptar a isso, seja qual for o seu comando.

    
por 12.01.2018 / 00:32
0

Você pode tocar em um arquivo com antecedência & tail -f file : em um painel ... então, dentro do vim, iniciando o make com o redirecionamento da saída para esse arquivo, ele exibirá a sua sessão de criação ....

    
por 11.01.2018 / 23:04

Tags