# Comandi principali di tmux

## Cos'è il Prefix

`Prefix` non è un tasto specifico, ma il nome della combinazione di tasti da premere **prima** di ogni comando di tmux, per segnalare "questo è un comando per tmux, non testo normale".

Per default il prefix è:

```
Ctrl + b
```

Quindi `Prefix c` significa: premi **Ctrl+b**, rilascia, poi premi **c**. Non si tengono premuti insieme, è in sequenza.

### Cambiare il prefix

Molti lo cambiano in `Ctrl+a` (più comodo, stessa posizione usata da `screen`). Aggiungere in `~/.tmux.conf`:

```bash
unbind C-b
set -g prefix C-a
bind C-a send-prefix
```

Poi ricaricare con `tmux source-file ~/.tmux.conf`.

## Sessioni

```bash
tmux new -s nome_sessione       # crea una nuova sessione con nome
tmux ls                         # elenca le sessioni attive
tmux attach -t nome_sessione    # riattacca a una sessione esistente
tmux kill-session -t nome       # chiude una sessione
tmux kill-server                # chiude tutto tmux
```

| Comando | Azione |
|---|---|
| `Prefix d` | stacca (detach) dalla sessione, resta attiva in background |
| `Prefix $` | rinomina la sessione |
| `Prefix s` | mostra elenco sessioni per passare tra loro |

## Finestre (windows = tab)

| Comando | Azione |
|---|---|
| `Prefix c` | crea nuova finestra |
| `Prefix ,` | rinomina finestra corrente |
| `Prefix n` | finestra successiva |
| `Prefix p` | finestra precedente |
| `Prefix 0-9` | vai alla finestra numero X |
| `Prefix w` | elenco finestre |
| `Prefix &` | chiudi finestra corrente |

## Pannelli (panes = suddivisione finestra)

| Comando | Azione |
|---|---|
| `Prefix %` | dividi verticalmente (pannelli affiancati) |
| `Prefix "` | dividi orizzontalmente (pannelli sopra/sotto) |
| `Prefix o` | passa al pannello successivo |
| `Prefix` + frecce (⬅➡⬆⬇) | naviga tra i pannelli |
| `Prefix q` | mostra numeri dei pannelli (poi premi il numero) |
| `Prefix z` | zoom sul pannello corrente (schermo intero temporaneo) |
| `Prefix x` | chiudi il pannello corrente |
| `Prefix {` / `Prefix }` | sposta il pannello corrente |
| `Prefix Ctrl` + frecce | ridimensiona il pannello attivo |
| `Prefix Space` | cicla tra i layout predefiniti |

## Copy mode (scorrere e copiare testo)

| Comando | Azione |
|---|---|
| `Prefix [` | entra in copy mode (scorri con frecce o PgUp/PgDn) |
| `Space` | inizia selezione (in copy mode) |
| `Enter` | copia selezione |
| `Prefix ]` | incolla |
| `q` | esci da copy mode |

## Command line di tmux

`Prefix :` apre la command line di tmux, dove si possono digitare comandi come:

```bash
split-window -h
resize-pane -D 10
```

`Prefix ?` mostra tutti i keybinding attivi.

## Abilitare il mouse in modo permanente

Per abilitare il supporto al mouse serve modificare `~/.tmux.conf` (crearlo se non esiste).

1. Apri il file:

   ```bash
   nano ~/.tmux.conf
   ```

2. Aggiungi questa riga:

   ```bash
   set -g mouse on
   ```

3. Salva ed esci (in `nano`: `Ctrl+O`, `Invio`, poi `Ctrl+X`).

4. Ricarica la configurazione senza riavviare tmux:

   ```bash
   tmux source-file ~/.tmux.conf
   ```

Da questo momento ogni nuova sessione (e anche quella attuale, dopo il reload) avrà il mouse attivo automaticamente.

### Cosa permette il mouse

- **Click** su un pannello per selezionarlo
- **Trascina i bordi** dei pannelli per ridimensionarli
- **Scroll** con la rotellina per scorrere l'output (entra automaticamente in copy mode)
- **Click su una finestra** nella status bar in basso per passarci
- **Trascina** la barra tra pannelli per ridimensionare

### Nota sulle versioni vecchie

Con tmux precedente alla 2.1 il comando andava diviso in più righe (`set -g mode-mouse on`, `set -g mouse-resize-pane on`, ecc.). Per controllare la versione installata:

```bash
tmux -V
```

Con tmux 2.1 o superiore basta la singola riga `set -g mouse on`.