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.conf
echo bind-key C-a send-prefix >>~/.tmux.conf
echo unbind-key C-b >>~/.tmux.conf
echo "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_vim
cp tmux_vim ~/.tmux.conf
wget https://raw.githubusercontent.com/aitzkora/nahasketa/master/tmux/a_rajouter_au_bashrc
cat a_rajouter_au_bashrc >>~/.bashrc
Avec le mode «classique » pour se deplacer
wget https://raw.githubusercontent.com/aitzkora/nahasketa/master/tmux/tmux_std
cp tmux_std ~/.tmux.conf
wget https://raw.githubusercontent.com/aitzkora/nahasketa/master/tmux/a_rajouter_au_bashrc
cat 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.conf
echo "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-pane
pour selectionner une sous-fenêtresplit-window
pour couper une fenêtre en deuxsend-keys
pour 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 monscript
lancer plusieurs gdb en parallèle
tmux-mpi 4 gdb -x ./monscript
- déverminer en parallèle