Le multiplexeur de terminaux tmux
Motivation
Lancement et configuration
- tmux <command> : voir man tmux pour toutes les possibilités;
- tmux list-sessions, ... : un certain nombre de commandes pour savoir à qui se connecter;
- tmux attach : récupère une session en cours;
- tmux -u : force tmux à considérer le terminal comme unicode;
- tmux setw mode-keys emacs : choisit le comportement en mode copie;
Une fois lancé, tmux peut être contrôlé via des commandes introduites par un préfixe (C-b par défaut) dont la présence sera implicite dans les paragraphes qui suivent.
Des commandes capitales sont:
- ? pour afficher la liste des raccourcis clavier;
- : pour entrer des commandes qui n'ont pas de raccourci (voir man tmux pour en avoir une idée);
- d pour détacher la session courante;
Les fenêtres
- c crée une nouvelle fenêtre;
- , renomme la fenêtre courante;
- p ou n passe d'une fenêtre à la précédente ou la suivante;
- 0,...,9 pour choisir une fenêtre en particulier;
Les panneaux
Initialement, chaque fenêtre comporte un seul panneau, qui prend tout le terminal.
- % divise verticalement la fenêtre ou le panneau courant;
- " le divise horizontalement;
- C-flèche le redimensionne en "poussant" le bord correspondant;
- { ou } passe d'un panneau au suivant;
Un panneau se ferme en quittant tous les programmes (même le shell) qui tournent à l'intérieur.
Copier-coller
Pour copier du texte d'un panneau, ou d'une fenêtre à l'autre de tmux:
- [ entre dans le mode copie;
- ] colle le texte copié;
Une fois dans le mode copie, les commandes pour sélectionner le texte à copier et le mémoriser dépendent du mode d'édition (vi ou emacs):
- Mode emacs: C-SPC commence la sélection, A-w copie et revient au mode normal; Le mode copie emacs comprend aussi quelques commandes de déplacement/recherches de emacs.
- Mode vi: SPC commence la sélection, RTN copie et revient au mode normal; Le mode copie vi comprend aussi quelques commandes de déplacement/recherche de vi.
Copier vers l'extérieur du terminal dépend du terminal en question, pas de tmux. Les séparations entre panneaux (comme |) ne sont alors pas comprises. Pour éviter ces perturbations, on peut occuper temporairement tout le terminal avec le panneau courant:
- z fait occuper tout le terminal au panneau courant
- on peut alors copier comme d'habitude sur ce terminal (par exemple: sélection à la souris sur xterm)
- z fait revenir le panneau à sa taille initiale
Ennuis divers
- Les commandes éxécutées à chaque démarrage de tmux figurent dans un fichier $HOME/.tmux.conf
- L’installation par défaut de tmux a l'horripilante manie de renommer la fenêtre courante à chaque commande. Remède: set-option -g allow-rename off
- Pour changer la touche préfixe (par exemple pour passer de C-b à C-m), mettre set -g prefix C-m
- Sur terminaux iso-8859-15, et même avec charmap ad-hoc, tmux 2.3 n'affiche pas bien les «é» et «œ» (décalage de curseur, «_» affiché, ...); la version 1.8 s'en tire bien.