liga o prefixo tmux à chave cmd do OS X (ou qualquer outra ligação)

18

Estou acostumado a iTerm2 (ou Terminal.app para este caso) no OS X. Mas eu quero passar a usar o tmux (ou tela, mas o problema é semelhante a ambos os aplicativos).

Então, minha ideia é ter uma única guia iTerm com uma sessão do tmux aberta com várias abas. Para fazer a transição tenho um recurso básico que preciso configurar no tmux: troque a aba 'n' usando cmd + n (como Firefox, Chrome, o próprio iTerm2, etc)

No entanto, não consigo encontrar uma maneira de mapear a tecla cmd no teclado mac. Eu tentei implementar o cmd como uma chave de prefixo, sem sucesso. Eu tentei definir

set-option -g prefix M-a (hoping for Meta-a)

set-option -g prefix ^a (hoping for ^ to work)

mas nada funciona. Isso é possível? Eu realmente não preciso vincular o prefixo para cmd, mas eu quero ser capaz de alterar as guias tmux com cmd + n.

Obrigado

    
por rubenfonseca 19.03.2011 / 16:33

5 respostas

8

Você deseja chamar uma sequência de pressionamentos de tecla (primeiro Ctrl-b , depois n variando de 0 a 9).

Sua melhor aposta é usar um utilitário de atalho de teclado, como Butler ou Keyboard Maestro para fazer isso por você.

Usando o Butler :

Selecione + »Item Inteligente» Teclas , configure a tecla de atalho Cmd-1 . Pressione Ctrl-B e, em seguida, 1 para os Teclas . Configure-o para ser válido apenas no Terminal (ou iTerm). Ele irá avisá-lo que outros aplicativos podem não gostar, mas você já sabe disso.

Usando o Keyboard Maestro :

Crie um novo grupo à esquerda que esteja disponível apenas no Terminal (ou iTerm).

Adicione um novo item, acionado pelo Hot Key Trigger ( Cmd-1 ) e adicione dois Teclas às suas ações: Ctrl-B e 1 .

Você também pode querer dar uma olhada em este tópico - não usa Command , e não funcionou para mim usando o Terminal.

Na documentação do tmux :

Bind key key to command. Keys may be specified prefixed with ‘C-’ or ‘ˆ’ for ctrl keys, or ‘M-’ for alt (meta) keys. The −r flag indicates this key may repeat, see the repeat-time option.

Eles não suportam uma terceira tecla modificadora.

    
por 19.03.2011 / 16:51
15

No iTerm2, você pode mapear atalhos para códigos hexadecimais que são enviados para o terminal. Ir às preferências do iTerm2 - > Chaves. Em Global Shortcut Keys, clique no + e adicione o tipo de atalho desejado, como o cmd + 1, que será capturado. Em seguida, selecione "Enviar código hexadecimal". Na caixa que aparece, digite os códigos hexadecimais que você deseja enviar para o tmux separados por espaços. Ctrl-B é 0x02, portanto, para "Ctrl-B 1", digite "0x02 0x31". Veja aqui mais códigos hexadecimais: link

Eu mapeei o Cmd com h, j, k, l para mover entre os painéis tmux e Cmd com% e "para criar os splits. Provavelmente farei algo semelhante para mover entre divisões do vim com uma chave de controle.

    
por 23.03.2013 / 20:57
2

Atalhos especiais podem ser feitos com o Terminal.app. Acabei de descobrir no outro dia, mas isso pode ter sido possível antes do leão.

Vá para Preferências > Configurações e clique na guia "Teclado". Agora você precisa adicionar um novo atalho de teclado clicando no ícone mais abaixo da caixa. Agora você deseja definir um combo de chave que "Envia string para shell".

Exemplo: Digamos que eu queira definir M-LeftArrow para ser mapeado para prefix-p (janela anterior).

Key: Left Arrow 
Modifier: Option 
Action: send string to shell

Agora basta digitar prefix-p na caixa de entrada, onde prefix é o que você definiu para o tmux (eu uso cntrl-a, então a caixa exibe %code%1p ). Observe que, se você cometer um erro, os caracteres de exclusão serão inseridos em vez de excluir os caracteres, então clique no botão "Excluir um caractere" para retroceder, caso você se atrapalhe.

Caracteres especiais que defini para facilitar a vida:

M-Left  > Previous Window
M-Right > Next Window
M-Up    > Enter scrolling mode
M-Down  > Next Pane

Você também pode modificar o cntrl-anything e o shift-anything, mas lembre-se de que isso pode interferir no seu $ EDITOR ou em outros programas, portanto tenha cuidado com as funções especiais que podem se tornar inúteis.

Além disso, note que não consegui descobrir como duplicar essa funcionalidade no iTerm2.

    
por 26.01.2012 / 07:21
1

Você também pode querer considerar a integração nativa (mas muito experimental) que o iTerm2 oferece com o tmux: link

Dessa forma, quando você pressionar Cmd-D para dividir a tela, o iTerm2 dividirá a guia para você. Isso é ótimo, porque a divisão é nativa, portanto, você pode arrastar a borda no meio para reajustar larguras ou pode selecionar um painel clicando em. Idem para novas abas / janelas (mas os atalhos são ligeiramente diferentes - caso contrário, você não teria como adicionar abas não-tmux).

E como o tmux, se você desanexar e anexar, tudo será salvo para você.

Existem duas advertências: * este é um recurso muito experimental e muito esquisito para mim. * você terá que construir o tmux você mesmo (usando o arquivo em algum lugar no link acima).

-Chris

    
por 26.07.2012 / 11:49
0

Você também pode ver esta postagem do blog que contém explicações detalhadas sobre a integração do tmux / iterm: link

    
por 02.01.2015 / 11:41