atalhos de teclado da cadeia tmux, ou equivalente para 'bind -c' + 'command -c' da tela

1

Um recurso interessante da tela é sua capacidade de atribuir atalhos de teclado a grupos chamados "classes". Com bind -c , você poderia atribuir esses atalhos a uma determinada classe e vincular command -c <class> a uma chave permitia que você selecionasse essa classe. Isso permitiu atalhos de teclado em várias camadas. Por exemplo, usei a chave x para selecionar um comando comum dedicado à classe. Com esses atalhos de ativador em sua própria classe, é possível usar chaves mnemônicas sem se preocupar com conflitos com o conjunto normal de associações de teclas. Existe alguma maneira de replicar esse recurso em tmux ?

Exemplo

# from my .screenrc
bind -c execute o screen -t imap 10 offlineimap.sh -o
bind -c execute m screen -t mpd ncmpcpp
bind -c execute w screen -t vw vimwiki
# ... more application launchers 
bind x command -c execute

Uso: o prefixo x entra na classe chave do ativador, onde eu coloco todos os atalhos de teclado do meu aplicativo.

    
por jw013 14.05.2012 / 04:12

3 respostas

5

Depois de entender melhor o que você está tentando fazer, acho que um script curto é o melhor caminho a percorrer (desculpe, não acho que exista uma solução tmux -apenas semelhante às classes de comando screen ):

Em .tmux.conf :

bind-key x command-prompt -p "launch what?" " "run-shell \"tmux-launcher %%\""

tmux-launcher deve ser um script de shell executável em algum lugar em seu caminho:

#!/bin/bash
case $1 in 
  o) tmux new-window -n imap -t 10 offlineimap.sh -o ;;
  m) tmux new-window -n mod ncmpcpp ;;
  w) tmux new-window -n vw vimwiki ;;
esac

Uma desvantagem é que você deve digitar return após a letra que seleciona a janela a ser criada.

    
por 14.05.2012 / 18:27
3

Eu estava recentemente informado sobre a abordagem switch-client

para ligar join-pane a prefix + t*

tmux bind-key t switch-client -Ttable1
tmux bind-key -Ttable1 '*' join-pane
    
por 14.11.2017 / 18:17
0

Tanto quanto sei, tmux não suporta classes de comando como esta. No entanto, pode ser possível realizar uma tarefa para a qual as classes de comando screen sejam adequadas de uma maneira diferente em tmux .

Veja um exemplo da página screen man, onde as janelas cujos índices são maiores que 9 podem ser selecionadas:

 bind -c demo1 0 select 10
 bind -c demo1 1 select 11
 bind -c demo1 2 select 12
 bindkey "^B" command -c demo1

A classe de comando 'demo1' permite selecionar a janela 12 usando "Ctrl-a Ctrl-B 2" (ou seria apenas "Ctrl-B 2"? Estou enferrujado com a configuração screen ).

Em tmux , você pode selecionar a janela 12 usando "Ctrl-b wc", onde "Ctrl-b w" é a ligação de chave padrão para invocar o comando choose-window e 'c' é o atalho para selecionar janela 12 do menu interativo de janelas.

Portanto, meu conselho geral é explorar o conjunto de comandos tmux para ver se há um idioma tmux disponível para o que você realizaria usando as classes de comando em screen . Se você tem uma tarefa específica em mente, recomendo que você a publique como uma pergunta à parte.

    
por 14.05.2012 / 16:26