Quelques notes sur tmux.
- session : liste de « windows »
- window : apparais comme un onglet et bas à gauche, peut contenir plusieurs « pane »
- pane : séparation/découpage de windows
commandes
- kill-session -t dst-sess
- permet de supprimer des « session »
- join-pane -t dst-pane
- split dst-pane et déplace le pane courant (qui peut être une window) dans le nouvelle espace
- join-pane -s src-pane
- split le pane courant et déplace src-pane (qui peut être une window) dans le nouvelle espace
- display-pane
- prefix+q
- affiche le numéro des pane de la window courante (utile pour pouvoir spécifier de façon précise dst-pane ou src-pane)
- break-pane
- prefix+!
- détache le pane courant et en fait une window
- choose-session
- prefix+s
- list les sessions et permet d’en séléctionner une
- choose-window
- prefix+w
- list les windows et permet d’en séléctionner une
split
Par défaut les split sont vertical et le pane crée est à droite, on peut modifier ça avec les options -h et -b.
split-window -h: split horizontal, nouveau pane en bassplit-window -b: split vertical, nouveau pane à gauchesplit-window -hb: split horizontal, nouveau pane en haut
dst-pane, src-pane, dest-win…
Pour désigner une session, une window ou un pane de façon unique la syntaxe est « session:window.pane ». En l’absence de ces séparateur tmux essai de « deviner » ce que l’utilisateur lui demande… lorsque cela est ambigue il ne fait rien (encore heureux). Pour désigner une window « 2 » dans la session courante on peut utilisé « 2 », mais si la session « 2 » exist il est préférable d’utiliser « :2 ».
Par exemple si on veut déplacer le pane 3 de la window 1 de la session courante « :1.3 » dans le nouvelle emplacement d’un split du pane courant de la window courante :
join-pane -s :1.3
synchronize-pane
Source : Sync tmux panes
Pour diffuser/lancer une commande sur plusieurs pane d’une même window vous pouvez utiliser la commande :set-window-option synchronize-panes.
Tous les caractères entrées dans un des panes de la window seront dupliqué dans les autres panes.
Pour désactiver la synchronisation lancer exactement la même commande. C’est un simple « toggle ».
tmux.conf
Mon fichier /etc/tmux.conf
# vim crtl-→
set-option -g xterm-keys on
# set prefix to Ctrl-q
set-option -g prefix C-q
unbind C-b
# send-prefix (for nested conf) to Ctrl-t
bind-key -n C-t send-prefix
# pour garder le même working directory au split
bind-key '"' split-window -c "#{pane_current_path}"
bind-key % split-window -h -c "#{pane_current_path}"
bind-key c new-window -c "#{pane_current_path}"
# temps d'attente entre deux event clavier marqué comme répétable
set-option -g repeat-time 200
# Start windows and panes at 1, not 0
set-option -g base-index 1
set-window-option -g pane-base-index 1
# use vi binding
# / : search
# n : next
# …
set-window-option -g mode-keys vi
# tmux will rename the window title according to the current running program (the title come from tmux),
# excepte if a window name is explicitely set by user with a tmux cmd
set-window-option -g automatic-rename on
# don't allow PROGRAM to rename the window title
set-window-option -g allow-rename off