Une situation typique peut être:
$ tmux
[0] $ ssh example.com
$ tmux attach
[0] $
J'ouvre une session tmux, puis ssh dans un serveur et j'attache à une session tmux existante. À ce stade, j'ai une session tmux dans une autre. Comment envoyer des commandes à la session tmux interne?
Remarque: les deux sessions tmux ont les mêmes raccourcis clavier.
Réponses:
La
send-prefix
commande peut être utilisée pour envoyer votre frappe de préfixe au (processus en cours d'exécution dans) le volet actif. Par défaut, le préfixe est Cb et Cb est lié àsend-prefix
(de sorte que le frapper deux fois envoie un seul Cb au volet actif). C'est exactement ce dont nous avons besoin pour accéder aux liaisons de l' instance tmux interne .Le premier Cb est capturé par l' instance tmux «externe» comme sa clé de préfixe. Le second est capturé par l' instance tmux «externe» et déclenche sa liaison Cb (
send-prefix
). Cela envoie un Cb au volet actif de l'instance externe. Le processus en cours d'exécution dans ce volet est (finalement, via une instance ssh ) l' instance tmux «interne» . Il capture le Cb comme sa clé de préfixe. Maintenant, votre prochaine frappe sera passée à travers l' instance tmux externe et capturée par l'instance interne pour déclencher une liaison.Pour déclencher la liaison c (
new-window
) dans une instance de deuxième niveau de tmux , vous devez taper Cb Cb c . Pour une instance de troisième niveau de tmux , tapez Cb Cb Cb Cb c .Ce doublement pour chaque niveau peut être ennuyeux si vous avez souvent affaire à plusieurs couches de tmux . Si vous pouvez épargner une autre clé, vous pouvez créer une liaison non préfixée pour rendre les choses (éventuellement) plus faciles à taper:
Créer une nouvelle fenêtre dans le tmux de deuxième niveau : C- \ c
Créer une nouvelle fenêtre dans le tmux de troisième niveau : C- ^ c (ou C- \ C- \ c )
Si vous avez un nombre limité de commandes tmux que vous souhaitez envoyer (facilement) aux instances tmux de niveau inférieur , vous pouvez plutôt utiliser
send-keys
pour créer des liaisons spécifiques (peut-être juste dans votre instance tmux de niveau supérieur ):Créer une nouvelle fenêtre dans tmux de deuxième niveau : Cb Cc
Créer une nouvelle fenêtre dans tmux de troisième niveau : Cb C
la source
last-window
comme il a été appelé contraignant lorsque vous faitesC-a C-a
, en tant que tel:#bind-key C-a last-window
. Notez que mon préfixe n'esta
pas la valeur par défautb
.bind-key -n C-\ send-prefix
ne marche pas. Mon tmux ne reconnaît pas le \. Quand j'utilise une lettre, ça marche.tmux bind-key -n 'C-\' send-prefix
); si vous rencontrez des problèmes pour le faire fonctionner~/.tmux.conf
(ou une:
ligne de commande Prefix ), alors vous pouvez essayer des citations similaires (iebind-key -n 'C-\' send-prefix
).Pour accéder à l'intérieur, maintenez le contrôle et appuyez deux fois sur B.
la source
ÉDITER:
Je ne recommande PAS l' utilisation
C-q
comme clé de liaison, car il s'agit d'une commande de touche de contrôle par défaut pourUne situation se produit ici , et @Paschalis fournit une solution:
Ci-dessous, la réponse:
Pour simplifier, ajoutez la ligne ci-dessous dans votre
~/.tmux.conf
Ensuite, vous pouvez directement utiliser
C-q
comme clé de liaison pour votre tmux distant.la source