Como posso ligar vários comandos tmux a um pressionamento de tecla?

12

Especificamente, estou tentando dar uma notificação depois que algum comando foi concluído. Então, por exemplo, se eu recarregar meu arquivo de configuração, gostaria de ter alguma confirmação de que funcionou, o que pode ser feito assim:

bind R source-file "$HOME/.tmux.conf" && display-message "Configuration reloaded."

Isso , no entanto, não funciona. Nem outras coisas que eu tentei como formas de amarrar comandos juntos.

    
por iconoclast 09.06.2011 / 20:43

4 respostas

11

Você pode usar a run-shell opção , mas o O mais importante é separar os comandos com \;

Neste caso, algo como:

bind R source-file ~/.tmux.conf \; run-shell "echo 'Reload'"

run-shell shell-command
(alias: run)
Execute shell-command in the background without creating a window. After it finishes, any output to stdout is displayed in copy mode. If the command doesn't return success, the exit status is also displayed.

    
por 09.06.2011 / 21:06
4

Logo após redigir minha pergunta, pensei em algo que pudesse funcionar. Eu tentei e funciona, você só tem que colocar vários arquivos para sua configuração do tmux.

Aqui está a solução, especificamente no que diz respeito ao recarregamento de sua configuração. No seu arquivo .tmux.conf, coloque algo assim:

bind R source-file "$HOME/.tmux/reload.tmux"

No arquivo ~ / .tmux / reload.tmux, coloque algo como o seguinte:

source-file "$HOME/.tmux.conf" 
display-message "Configuration reloaded."

Funciona perfeitamente.

    
por 09.06.2011 / 21:37
1

O uso do método run-shell coloca a saída no buffer de cópia que requer limpeza manual. Usar um arquivo de configuração intermediário adiciona a sobrecarga de manter um segundo arquivo de configuração. Combinar as duas respostas funciona melhor no meu caso, já que queria que a mensagem desaparecesse após um curto intervalo, semelhante a uma caixa de diálogo pop-up em uma GUI, mas mantenha tudo contido em um único arquivo.

bind R source-file ~/.tmux.conf \; display-message "Configuration reloaded"
    
por 31.01.2014 / 15:30
0

Existe um patch que permite scripts completos dentro do tmux, anexando a linguagem tcl aos seus internos.

link

Além disso, permite especificar quantas ações você desejar para os pressionamentos de teclas do 'modo'.

Usando isso, seu código ficaria assim:

bind R tcl { source-file "$HOME/.tmux.conf" ; display-message "Configuration reloaded." }

ou ainda mais legível:

bind R tcl {
  source-file "$HOME/.tmux.conf"
  display-message "Configuration reloaded."
}
    
por 19.04.2016 / 01:40