Uma situação típica pode ser:
$ tmux
[0] $ ssh example.com
$ tmux attach
[0] $
Abro uma sessão tmux, ssh em um servidor e conecto a uma sessão tmux existente. Neste ponto, tenho uma sessão tmux dentro de outra. Como envio comandos para a sessão interna do tmux?
Nota: As duas sessões do tmux têm as mesmas ligações de teclas.
Respostas:
O
send-prefix
comando pode ser usado para enviar o pressionamento de tecla do prefixo para (o processo em execução) no painel ativo. Por padrão, o prefixo é Cb e Cb está vinculado asend-prefix
(para que pressioná-lo duas vezes envie um único Cb para o painel ativo). É exatamente isso que precisamos para acessar as ligações da instância interna do tmux .O primeiro Cb é capturado pela instância tmux "externa" como sua chave de prefixo. O segundo é capturado pela instância tmux "externa" e dispara sua ligação Cb (
send-prefix
). Isso envia um Cb para o painel ativo da instância externa. O processo em execução neste painel é (em última instância, através de uma instância ssh ) a instância tmux "interna" . Ele captura o Cb como sua chave de prefixo. Agora, seu próximo pressionamento de tecla será passado pela instância externa do tmux e capturado pela interna para acionar uma ligação.Para acionar a ligação c (
new-window
) em uma instância de segundo nível do tmux , digite Cb Cb c . Para uma instância de tmux de terceiro nível , digite Cb Cb Cb Cb c .Essa duplicação para cada nível pode ser irritante se você estiver lidando com várias camadas do tmux . Se você puder poupar alguma outra chave, poderá criar uma ligação não prefixada para facilitar a digitação das coisas (possivelmente):
Criar nova janela no tmux de segundo nível : C- \ c
Criar nova janela no tmux de terceiro nível : C- ^ c (ou C- \ C- \ c )
Se você tiver um número limitado de comandos tmux que deseja enviar (facilmente) para as instâncias tmux de nível inferior , poderá usar
send-keys
para criar algumas ligações específicas (possivelmente apenas na sua instância tmux de nível superior ):Criar nova janela no tmux de segundo nível : Cb Cc
Criar nova janela no tmux de terceiro nível : Cb C
fonte
last-window
de ligação, como era chamado quando fazerC-a C-a
, como tal:#bind-key C-a last-window
. Observe que meu prefixoa
não é o padrãob
.bind-key -n C-\ send-prefix
não funciona. Meu tmux não está reconhecendo o \. Quando uso uma carta, ela funciona.tmux bind-key -n 'C-\' send-prefix
); Se você está tendo problemas para fazê-lo funcionar~/.tmux.conf
(ou em uma:
linha de comando Prefixo ), tente citações semelhantes (por exemplobind-key -n 'C-\' send-prefix
).Para acessar o interior, mantenha o controle e pressione B duas vezes.
fonte
EDITAR:
Eu não recomendo o uso
C-q
de uma chave-bind, como é um comando padrão de controle-chave paraUma situação acontece aqui e o @Paschalis fornece uma solução:
Abaixo está a resposta:
Para simplificar, adicione a linha abaixo no seu
~/.tmux.conf
Então você pode usar diretamente
C-q
como chave de ligação para o seu tmux remoto.fonte