# Riferimento Rapido Emacs

*Navigazione, modifica, buffer, ricerca, org mode, pacchetti*

> Source: GNU Emacs Manual (gnu.org/software/emacs) · MIT

## Navigazione

### Movimento del Cursore

| Command | Description |
|---------|-------------|
| `C-f / C-b` | Avanti / indietro di un carattere |
| `M-f / M-b` | Avanti / indietro di una parola |
| `C-n / C-p` | Riga successiva / precedente |
| `C-a / C-e` | Inizio / fine riga |
| `M-a / M-e` | Inizio / fine frase |
| `C-v / M-v` | Scorri giù / su di una pagina |
| `M-< / M->` | Inizio / fine buffer |
| `M-g g` | Vai al numero di riga |

### Posizionamento Schermo

| Command | Description |
|---------|-------------|
| `C-l` | Centra schermo (cicla in alto/centro/basso) |
| `C-M-l` | Riposiziona la finestra euristicamente |

## Modifica

### Kill e Yank (Taglia e Incolla)

| Command | Description |
|---------|-------------|
| `C-k` | Kill fino a fine riga |
| `C-w` | Kill regione (taglia) |
| `M-w` | Copia regione |
| `C-y` | Yank (incolla) |
| `M-y` | Cicla nel kill ring dopo yank |
| `C-d` | Elimina carattere in avanti |
| `M-d` | Kill parola in avanti |
| `M-DEL` | Kill parola indietro |

### Annulla e Trasponi

| Command | Description |
|---------|-------------|
| `C-/ o C-_` | Annulla |
| `C-g C-/` | Ripristina (annulla l'annullamento) |
| `C-t` | Trasponi caratteri |
| `M-t` | Trasponi parole |
| `C-x C-t` | Trasponi righe |

### Selezione

| Command | Description |
|---------|-------------|
| `C-SPC` | Imposta marca (inizia selezione) |
| `C-x h` | Seleziona tutto il buffer |
| `M-h` | Seleziona paragrafo |
| `C-x C-x` | Scambia punto e marca |

## Buffer e Finestre

### Buffer

| Command | Description |
|---------|-------------|
| `C-x b` | Passa a un buffer |
| `C-x C-b` | Elenca tutti i buffer |
| `C-x k` | Kill (chiudi) buffer |
| `C-x LEFT / RIGHT` | Buffer precedente / successivo |

### Finestre

| Command | Description |
|---------|-------------|
| `C-x 2` | Dividi finestra orizzontalmente |
| `C-x 3` | Dividi finestra verticalmente |
| `C-x 0` | Chiudi finestra corrente |
| `C-x 1` | Chiudi tutte le altre finestre |
| `C-x o` | Passa all'altra finestra |
| `C-x ^` | Espandi finestra verticalmente |
| `C-x {` | Riduci finestra orizzontalmente |

### Frame

| Command | Description |
|---------|-------------|
| `C-x 5 2` | Crea nuovo frame |
| `C-x 5 0` | Elimina frame corrente |
| `C-x 5 o` | Passa all'altro frame |

## Ricerca e Sostituzione

### Ricerca Incrementale

| Command | Description |
|---------|-------------|
| `C-s` | Cerca in avanti (incrementale) |
| `C-r` | Cerca indietro (incrementale) |
| `C-s C-s` | Ripeti ultima ricerca in avanti |
| `C-M-s` | Ricerca regex in avanti |
| `C-M-r` | Ricerca regex indietro |
| `RET` | Esci dalla ricerca nella posizione corrente |
| `C-g` | Annulla ricerca, torna all'inizio |

### Sostituzione

| Command | Description |
|---------|-------------|
| `M-%` | Sostituisci con conferma |
| `C-M-%` | Sostituisci con conferma (regex) |
| `y` | Sostituisci questa corrispondenza |
| `n` | Salta questa corrispondenza |
| `!` | Sostituisci tutte le rimanenti |
| `q` | Esci dalla sostituzione |

## File

### Operazioni sui File

| Command | Description |
|---------|-------------|
| `C-x C-f` | Trova (apri) file |
| `C-x C-s` | Salva buffer corrente |
| `C-x C-w` | Salva come (scrivi su nuovo file) |
| `C-x s` | Salva tutti i buffer modificati |
| `C-x C-r` | Apri file in sola lettura |
| `C-x i` | Inserisci contenuto file al punto |

### Dired (Editor Directory)

| Command | Description |
|---------|-------------|
| `C-x d` | Apri directory in Dired |
| `d / x` | Segna per eliminazione / esegui eliminazioni |
| `R` | Rinomina / sposta file |
| `C` | Copia file |
| `+` | Crea directory |
| `g` | Aggiorna l'elenco |

## Modalità

### Modalità Principali

| Command | Description |
|---------|-------------|
| `M-x fundamental-mode` | Modifica testo semplice |
| `M-x text-mode` | Testo con riempimento e correttore |
| `M-x prog-mode` | Base per le modalità di programmazione |
| `M-x python-mode` | Modifica Python e indentazione |
| `M-x shell-mode` | Shell interattiva nel buffer |

### Modalità Minori Utili

| Command | Description |
|---------|-------------|
| `M-x display-line-numbers-mode` | Alterna numeri di riga |
| `M-x auto-fill-mode` | Testo a capo automatico alla colonna di riempimento |
| `M-x flyspell-mode` | Correttore ortografico al volo |
| `M-x column-number-mode` | Mostra colonna nella riga di modo |
| `M-x whitespace-mode` | Visualizza gli spazi bianchi |
| `M-x electric-pair-mode` | Chiusura automatica parentesi e virgolette |

## Basi di Org Mode

### Struttura

| Command | Description |
|---------|-------------|
| `* / ** / ***` | Livelli di intestazione 1 / 2 / 3 |
| `TAB` | Cicla visibilità intestazione |
| `S-TAB` | Cicla visibilità globale |
| `M-RET` | Inserisci intestazione allo stesso livello |
| `M-LEFT / M-RIGHT` | Promuovi / retrocedi intestazione |
| `M-UP / M-DOWN` | Sposta sottostruttura su / giù |

### TODO e Checkbox

| Command | Description |
|---------|-------------|
| `C-c C-t` | Cicla stato TODO |
| `C-c C-d` | Imposta scadenza |
| `C-c C-s` | Pianifica elemento |
| `C-c C-c` | Alterna checkbox [ ] / [X] |
| `C-c a` | Apri vista agenda |

### Link ed Esportazione

| Command | Description |
|---------|-------------|
| `C-c C-l` | Inserisci / modifica link |
| `C-c C-o` | Apri link al punto |
| `C-c C-e` | Dispatcher esportazione (HTML, PDF, ecc.) |

## Gestione Pacchetti

### package.el

| Command | Description |
|---------|-------------|
| `M-x list-packages` | Sfoglia i pacchetti disponibili |
| `i / d / x` | Segna installa / elimina / esegui |
| `U` | Segna tutti gli aggiornabili |
| `M-x package-refresh-contents` | Aggiorna la lista dei pacchetti |

### use-package (init.el)

```
(use-package magit
  :ensure t
  :bind ("C-x g" . magit-status))
(use-package company
  :ensure t
  :hook (prog-mode . company-mode))
```

## Configurazione

### File di Configurazione Principali

| Command | Description |
|---------|-------------|
| `~/.emacs.d/init.el` | File di configurazione principale |
| `~/.emacs.d/early-init.el` | Init anticipato (prima della GUI, Emacs 27+) |
| `~/.emacs.d/custom.el` | Impostazioni scritte da Customize |

### Impostazioni Comuni

```
(setq inhibit-startup-screen t)
(tool-bar-mode -1)
(set-face-attribute 'default nil :height 120)
(global-display-line-numbers-mode 1)
(setq make-backup-files nil)
```

### Sistema di Aiuto

| Command | Description |
|---------|-------------|
| `C-h k` | Descrivi la scorciatoia da tastiera |
| `C-h f` | Descrivi la funzione |
| `C-h v` | Descrivi la variabile |
| `C-h m` | Descrivi le modalità correnti |
| `C-h t` | Apri il tutorial di Emacs |
| `C-h i` | Apri la documentazione Info |

## Pattern Comuni

### Modifica Rettangolo

| Command | Description |
|---------|-------------|
| `C-x SPC` | Avvia modalità marca rettangolo |
| `C-x r k` | Kill rettangolo |
| `C-x r y` | Yank rettangolo |
| `C-x r t` | Sostituisce rettangolo con stringa |
| `C-x r o` | Inserisci rettangolo vuoto |

### Macro

| Command | Description |
|---------|-------------|
| `C-x (` | Inizia registrazione macro |
| `C-x )` | Ferma registrazione macro |
| `C-x e` | Esegui ultima macro |
| `C-u 10 C-x e` | Esegui macro 10 volte |
| `M-x name-last-kbd-macro` | Assegna nome alla macro per riuso |

### Shell e Eval

| Command | Description |
|---------|-------------|
| `M-x shell` | Apri shell nel buffer |
| `M-x eshell` | Shell Emacs Lisp |
| `M-!` | Esegui comando shell |
| `M-x eval-buffer` | Valuta l'intero buffer come Elisp |
| `C-x C-e` | Valuta espressione Elisp prima del punto |
