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.