← retour aux snippets

tmux: sessions persistantes rapides

Créer, détacher et reprendre des sessions tmux avec splits, renommage et synchro des panes.


objectif

Lancer des tâches longues sans perdre l’état du terminal: créer une session tmux, la quitter et la reprendre plus tard, organiser en fenêtres et panes.

code minimal

# créer une session nommée
tmux new -s dev
# détacher: Ctrl-b puis d
# reprendre
tmux attach -t dev

utilisation

# lister les sessions et leur statut
tmux ls

# créer une session en arrière-plan
tmux new -d -s build 'npm run build'

# renommer la session courante
tmux rename-session -t dev dev-backend

# créer une nouvelle fenêtre et s'y déplacer
tmux new-window -n logs 'tail -F /var/log/app.log'
tmux select-window -t :logs

# splits horizontal et vertical
tmux split-window -h      # split horizontal (cote à cote)
tmux split-window -v      # split vertical (haut/bas)

# passer d'un pane à l'autre (raccourcis: Ctrl-b puis flèches)
tmux select-pane -L
tmux select-pane -R
tmux select-pane -U
tmux select-pane -D

# synchroniser la saisie sur tous les panes de la fenêtre (toggle)
tmux set-window-option synchronize-panes on
tmux set-window-option synchronize-panes off

# redimensionner un pane (ex: +10 colonnes vers la droite)
tmux resize-pane -R 10

# copier/scroll: entrer en mode copie puis chercher
tmux copy-mode -e
# dans copy-mode: /pattern pour chercher; q pour quitter

# tuer une fenêtre ou une session
tmux kill-window
tmux kill-session -t dev-backend

variante(s) utile(s)

# démarrer tmux si absent, sinon attacher (helper pour .bashrc/.zshrc)
tm() {
  local name="${1:-work}"
  if tmux has-session -t "$name" 2>/dev/null; then
    tmux attach -t "$name"
  else
    tmux new -s "$name"
  fi
}

# layout prédéfini: 3 panes (gauche large, deux à droite)
tmux new -d -s dev
tmux split-window -h
tmux split-window -v
tmux select-pane -L
tmux resize-pane -R 30
tmux attach -t dev

# envoyer une commande à un pane précis (ex: pane 1 de la fenêtre 0)
tmux send-keys -t 0.1 'pytest -q' C-m

# historique plus long et souris active pour scroll/select (session courante)
tmux set -g mouse on
tmux set -g history-limit 50000

notes

  • prefix par defaut: Ctrl-b. Détacher avec Ctrl-b puis d. Reattacher avec tmux attach -t <nom>.
  • préférez des noms explicites par projet (dev, ops, build) pour naviguer vite.
  • new -d lance en arrière-plan: utile pour démarrer une tâche et récupérer la session plus tard.
  • activez mouse on si vous aimez scroller et redimensionner à la souris; sinon gardez les raccourcis clavier pour la portabilité.