Il prefix, e le finestre
Tutti i tasti di tmux passano da una combinazione sola. Capire perché è fatta così — e come cambiarla senza pentirsene — è il passo che trasforma tmux da ostacolo a strumento.
Perché c'è un tasto in mezzo
tmux ha un problema che gli editor non hanno: i tasti che premi devono arrivare ai programmi che gira. Se Ctrl+c servisse a tmux, non potresti più interrompere niente. La soluzione è un tasto di attivazione: una combinazione che nessun programma usa, premuta la quale il tasto successivo va a tmux invece che alla shell.
L'impostazione di fabbrica è Ctrl+b. Da qui in avanti la chiamo prefix, perché quasi tutti finiscono per cambiarla e perché le scorciatoie vanno ricordate come «prefix più qualcosa», non come combinazioni di tre dita.
Ctrl-b # 1. premi e lascia: tmux ora sta ascoltando c # 2. premi il comando: crea una finestra nuova # NON è Ctrl-b-c tenuti insieme. # Se sbagli e non succede nulla, premi Esc e ricomincia.
I tre comandi da sapere prima di tutti gli altri
| Tasti | Effetto |
|---|---|
| prefix ? | l'elenco di tutte le scorciatoie attive, la tua sessione compresa. Si esce con q. |
| prefix d | stacca la sessione (lezione 1) |
| prefix : | apre la riga di comando di tmux, dove si può fare tutto (lezione 7) |
prefix ? merita una raccomandazione esplicita: è generato dalla tua configurazione, quindi è sempre corretto, a differenza di qualsiasi promemoria stampato. Quando non ricordi un tasto, guarda lì prima di cercare in rete.
Le finestre: una per attività
Una finestra è una schermata intera. Il modo sano di usarle è per attività e non per file: una per l'editor, una per il server di sviluppo, una per i comandi al volo, una per i log. L'asterisco nella status bar indica la finestra attiva, il trattino l'ultima visitata.
| Tasti | Effetto |
|---|---|
| prefix c | crea una finestra nuova (create) |
| prefix n · p | finestra successiva / precedente |
| prefix 0…9 | salta direttamente a quel numero |
| prefix l | torna all'ultima finestra usata (last) — avanti e indietro fra due |
| prefix w | elenco interattivo di finestre e sessioni, con anteprima |
| prefix , | rinomina la finestra corrente |
| prefix & | chiude la finestra, chiedendo conferma |
| prefix f | cerca una finestra per nome o per testo che contiene |
| prefix . | rinumera la finestra: utile quando restano dei buchi |
I nomi non sono un vezzo
Con tre finestre te la cavi con i numeri. Con otto no: 0:bash 1:bash
2:bash non dice niente, e dopo mezz'ora stai girando in tondo con
prefix n per ritrovare il server. Dai un nome a
ogni finestra appena la crei, con prefix ,:
dieci caratteri, una parola.
set -g allow-rename off nel file di configurazione, o
set -g automatic-rename off a seconda della versione — la lezione 6
spiega dove metterli.
Rimappare il prefix, e le tre cose da fare subito dopo
Ctrl+b è scomodo: la b sta lontana dal mignolo e in Vim Ctrl+b significa «pagina indietro». La scelta quasi universale è Ctrl+a, che è anche il prefix di Screen — la a è sotto il mignolo sinistro.
# il nuovo prefix unbind C-b set -g prefix C-a bind C-a send-prefix # prefix due volte = un Ctrl-a vero # ricarica la configurazione senza riavviare nulla bind r source-file ~/.tmux.conf \; display "configurazione ricaricata" # finestre numerate da 1: la tastiera parte da 1, non da 0 set -g base-index 1 setw -g pane-base-index 1 set -g renumber-windows on
Poi tmux kill-server (o prefix : e
source-file ~/.tmux.conf) e il nuovo prefix è attivo.
Perché quella terza riga è importante
bind C-a send-prefix risolve il problema che il rimappaggio crea:
Ctrl+a nella shell porta il cursore a inizio riga, ed è un
tasto che si usa di continuo. Con quella riga, premuto due volte il
prefix viene inoltrato al programma sotto. Vale anche per tmux dentro tmux, di cui
parla la lezione 9.
renumber-windows. Rinumera tutto
quando chiudi una finestra in mezzo, il che tiene l'elenco compatto ma sposta le
scorciatoie numeriche sotto le dita: la finestra 4 può diventare la 3 mentre non
guardi. Se preferisci che i numeri restino stabili, lascialo off e
usa prefix w per orientarti.