Introduction à Tmux
Table of Contents
- 1. Buts de ce « Midi de la Bidouille »
- 2. Configuration
- 3. Lancer une session / se connecter à une session
- 4. Gérer plusieurs fenêtres
- 5. Travailler avec des sous-fenêtres
- 6. Faire des copiés-collés
- 6.1. Pour copier, il faut passer en mode « édition » :
- 6.2. pour copier tout le contenu d'une sous-fenêtre
- 6.3. pour coller (le tampon 0)
- 6.4. pour voir les differents tampons
- 6.5. pour coller depuis un tampon
- 6.6. On peut integrer Tmux avec le presse-papier GNU Linux en rajoutant
- 6.7. un greffon de Vim (qui marche aussi avec GNU Screen) permet de faire des copiés-collés rapides
- 7. « Scripter » Tmux
- 8. Application au déverminage parallèle
Collègue, Camarade, bienvenue à toi dans la bidouille
Ce fichier est disponible en ligne à http://sed.bordeaux.inria.fr/org/tmux.org
1 Buts de ce « Midi de la Bidouille »
- se connecter/ se deconnecter à une session en tâche de fond
- gérer plusieurs fenêtres dans un même terminal
- travailler avec des sous-fenêtres
- faire des copiés/collés entre fenêtres
- scripter tmux
- une application à gdb
2 Configuration
2.1 Si tu veux une config quasiment identique à l'original
echo set-option -g prefix C-a >>~/.tmux.confecho bind-key C-a send-prefix >>~/.tmux.confecho unbind-key C-b >>~/.tmux.confecho "bind-key r source-file ~/.tmux.conf \\; display \"config rechargée\" ">>~/.tmux.conf
2.2 Sinon deux configurations un peu plus élaborées qui nécessitent de modifier le bashrc sont
disponibles :
Avec le mode vi pour se deplacer
wget https://raw.githubusercontent.com/aitzkora/nahasketa/master/tmux/tmux_vimcp tmux_vim ~/.tmux.confwget https://raw.githubusercontent.com/aitzkora/nahasketa/master/tmux/a_rajouter_au_bashrccat a_rajouter_au_bashrc >>~/.bashrcAvec le mode «classique » pour se deplacer
wget https://raw.githubusercontent.com/aitzkora/nahasketa/master/tmux/tmux_stdcp tmux_std ~/.tmux.confwget https://raw.githubusercontent.com/aitzkora/nahasketa/master/tmux/a_rajouter_au_bashrccat a_rajouter_au_bashrc >>~/.bashrc
3 Lancer une session / se connecter à une session
3.1 Dans un terminal, lancez tmux
tmux -2 # pour autoriser le mode 256 couleurs
3.2 voir les sessions tmux
tmux ls
3.3 se connecter à une session existante : dans un autre terminal
tmux at -t 0 # 0 est ici le numéro de la session
3.4 se deconnecter
- taper « C-a d »
3.5 exemple sur plafrim «en direct»
- se connecter à plafrim
- lancer tmux
- lancer un job dans la session
- se detacher
- se deconnecter de plafrim
- se reconnecter sur la même machine
- se reconnecter à la session précédente
4 Gérer plusieurs fenêtres
- «C-a c » : crée une nouvelle fenêtre
- «C-a n » : bascule à la fenêtre suivante
- «C-a p » : bascule à la fenêtre précédente
- «C-a & » : supprimer une fenêtre
- «C-a f » : recherche une fenêtre
- «C-a C-t » : retour a la fenêtre antérieure (« C-a l » dans la config de base)
- «C-a 1 » : va à la fenêtre 1
- «C-a 2 » : va à la fenêtre 2
- «C-a <nb> » : va à la fenêtre <nb>
5 Travailler avec des sous-fenêtres
- «C-a " » : divise horizontalement une fenêtre
- «C-a % » : divise verticalement une fenêtre - n'existe pas dans GNU Screen ^_^ -
- «C-a x » : supprime une sous-fenêtre
- «C-a C-o » : change la disposition des sous-fenêtres
- «C-a → » : bascule dans la sous-fenêtre à droite
- «C-a ↑ » : bascule dans la sous-fenêtre en haut
6 Faire des copiés-collés
6.1 Pour copier, il faut passer en mode « édition » :
6.1.1 mode classique :
- tapes « C-a [ »
- promênes-toi avec ←, → , ↑, ↓
- tapes « Espace » au début d'une zone à copier
- tapes « Entrée » à la fin de la zone
6.1.2 mode « vim » :
- tapes « C-a Escape »
- promênes-toi avec i, j, k , l
- tapes « v » au début d'une zone à copier
- tapes « y » à la fin de la zone
6.2 pour copier tout le contenu d'une sous-fenêtre
- tapes « C-a : » puis capture pane
6.3 pour coller (le tampon 0)
- tapes « C-a ] » en mode classique (« C-a )» dans la config fournie )
6.4 pour voir les differents tampons
- tapes « C-a : » puis list-buffers
6.5 pour coller depuis un tampon
- tapes « C-a : » puis choose-buffer
6.6 On peut integrer Tmux avec le presse-papier GNU Linux en rajoutant
echo "bind-key C-c run \"tmux save-buffer - | xclip -i -sel clipboard\" ">>~/.tmux.confecho "bind-key C-v run \"tmux set-buffer \"$(xclip -o -sel clipboard)\"\\; tmux paste-buffer\" ">>~/.tmux.conf
6.7 un greffon de Vim (qui marche aussi avec GNU Screen) permet de faire des copiés-collés rapides
entre une fenêtre d'édition et une fenêtre de compile voir à ce propos le lien https://github.com/jpalardy/vim-slime
7 « Scripter » Tmux
- La plupart des commandes de redimensionnement, d'ouverture de fenêtre, etc… peuvent être executer en mode commande
« C-a : » ou sur la ligne de commande en précédent de l'executable
tmux - On peut par exemple dans le gestionnaire de fenêtres associer une touche à l'ouverture d'une fenêtre tmux
bindsym $mod+m exec tmux neww cmus# pour i3 ouvre une nouvelle fenêtre en lançant cmus - à titre d'exemple, on pourra executer le script disponible à l'adresse suivante :
https://github.com/aitzkora/nahasketa/blob/master/tmux/inutil.sh
il utilise :
select-panepour selectionner une sous-fenêtresplit-windowpour couper une fenêtre en deuxsend-keyspour envoyer des données sur une sous-fenêtre donnée
8 Application au déverminage parallèle
8.1 On peut utiliser tmux pour multiplexer une même entrée de commandes GNU gdb, dans différentes
fenêtres executant chacune un processus mpi. Pour cela,
télécharger le programme suivant
wget https://raw.githubusercontent.com/aitzkora/nahasketa/master/tmux/tmux-mpiécrire un script gdb
vim monscriptlancer plusieurs gdb en parallèle
tmux-mpi 4 gdb -x ./monscript- déverminer en parallèle