Introduction à Tmux

Table of Contents

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être
    • split-window pour couper une fenêtre en deux
    • send-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

Date: 11/02/2016

Author: Marc Fuentes

Created: 2019-11-15 or. 17:33

Validate