Pannelli: dividere lo schermo
Questa è la parte di tmux che si vede, ed è anche quella che si esagera. Ogni pannello toglie righe agli altri: la bravura non sta nell'aprirne dieci, sta nel sapere quando zoomare su uno solo.
Dividere, e poi muoversi
Un pannello è un riquadro con dentro una shell. Dividendolo ne ottieni due, che si spartiscono lo spazio del primo. Le scorciatoie di fabbrica sono % e ", che nessuno ricorda perché non assomigliano a quello che fanno: la lezione si chiude rimappandole.
| Tasti | Effetto |
|---|---|
| prefix % | divide in verticale: i due pannelli stanno affiancati |
| prefix " | divide in orizzontale: uno sopra, uno sotto |
| prefix ←↑↓→ | sposta il cursore nel pannello in quella direzione |
| prefix o | gira ciclicamente fra i pannelli |
| prefix ; | torna all'ultimo pannello usato |
| prefix q | mostra il numero di ogni pannello · premi quel numero per andarci |
| prefix x | chiude il pannello, con conferma · oppure exit |
| prefix z | ingrandisce il pannello a tutta finestra, e lo rimpicciolisce |
| prefix { · } | scambia il pannello con il precedente / successivo |
| prefix Spazio | passa al layout predefinito successivo |
┌──────────────────────┬───────────────────┐ │ │ │ │ 1 vim index.php │ 2 npm run dev │ │ │ │ │ ├───────────────────┤ │ │ │ │ │ 3 tail -f log │ └──────────────────────┴───────────────────┘ sito 1:codice* 2:git 14:32
set -g pane-active-border-style fg=colour214. Su schermi grandi con
molti pannelli è l'unica cosa che ti dice dove finiranno i tasti che premi.
Ridimensionare
| Tasti | Effetto |
|---|---|
| prefix Ctrl+←↑↓→ | allarga o stringe di una cella, tenendo premuto |
| prefix Alt+←↑↓→ | lo stesso, a passi di cinque |
| prefix : resize-pane -D 10 | preciso: giù di dieci righe · -U -L -R per le altre direzioni |
| prefix : resize-pane -x 80 | larghezza esatta in colonne |
Layout, zoom, e pannelli che cambiano posto
tmux ha cinque disposizioni predefinite, che ricalcolano tutto in un colpo. Si scorrono con prefix Spazio o si scelgono per nome.
| Layout | Disposizione |
|---|---|
| even-horizontal | tutti affiancati, stessa larghezza |
| even-vertical | tutti impilati, stessa altezza |
| main-horizontal | uno grande in alto, gli altri in fila sotto |
| main-vertical | uno grande a sinistra, gli altri in colonna a destra — l'editor più i suoi accessori |
| tiled | griglia il più regolare possibile |
:select-layout main-vertical :select-layout tiled # e per dare più spazio al pannello principale: :set main-pane-width 100 :select-layout main-vertical
Lo zoom è la funzione più utile del gruppo
prefix z porta il pannello corrente a tutta finestra e, premuto di nuovo, lo rimette dov'era senza scomporre niente. Serve ogni volta che una cosa che stavi tenendo d'occhio diventa per cinque minuti la cosa principale: leggere un file lungo, guardare un diff, seguire un errore.
Quando un pannello è zoomato, la status bar lo dice con una Z
accanto al nome della finestra. È il dettaglio che ti evita di pensare che gli
altri pannelli siano spariti.
Spostare un pannello altrove
| Comando | Effetto |
|---|---|
| prefix ! | stacca il pannello e lo promuove a finestra propria |
| join-pane -t :2 | prende questo pannello e lo attacca alla finestra 2 |
| join-pane -s :3 -t :1 -h | porta il pannello della finestra 3 dentro la 1, affiancato |
| break-pane -d | lo stacca in una finestra nuova senza saltarci dentro |
| swap-pane -D | scambia di posto con il pannello successivo |
break-pane e join-pane sono la coppia che serve quando
una finestra si è affollata: stacchi il pannello dei log, lo mandi in una finestra
sua, e quando ti serve di nuovo sott'occhio lo riporti indietro.
Divisioni che si ricordano, e che aprono nella cartella giusta
Due fastidi delle impostazioni di fabbrica si risolvono con quattro righe. Primo:
% e " sono arbitrari. I caratteri | e
- assomigliano al taglio che producono, e si ricordano da
soli. Secondo: un pannello nuovo parte sempre dalla cartella home, e la prima cosa
che fai è rifare il cd.
# divisioni mnemoniche, che ereditano la cartella corrente bind | split-window -h -c "#{pane_current_path}" bind - split-window -v -c "#{pane_current_path}" unbind '"' unbind % # anche le finestre nuove partono da lì bind c new-window -c "#{pane_current_path}" # muoversi fra i pannelli senza rilasciare il prefix ogni volta bind -r h select-pane -L bind -r j select-pane -D bind -r k select-pane -U bind -r l select-pane -R # ridimensionare, ripetibile bind -r H resize-pane -L 5 bind -r J resize-pane -D 5 bind -r K resize-pane -U 5 bind -r L resize-pane -R 5
#{pane_current_path} è una variabile di formato: tmux la
sostituisce con la cartella in cui si trova il pannello da cui stai dividendo. È
lo stesso meccanismo che la lezione 8 usa per costruire la status bar.
-r vale da sola il tempo di configurarla.
Significa «ripetibile»: dopo aver premuto il prefix una volta, puoi battere
H H H per allargare di quindici colonne senza
ripremerlo. La finestra di ripetizione dura mezzo secondo e si regola con
set -g repeat-time 600.
bind Tab last-window. Rimappare senza accorgersi di cosa si sta
coprendo è il modo più rapido di farsi una configurazione che sembra rotta.