# Riferimento Rapido VS Code

*Navigazione, editing, multi-cursore, terminale, debug, estensioni*

> Source: VS Code Documentation (code.visualstudio.com/docs) · MIT

## Navigazione

### Navigazione File e Simboli

| Command | Description |
|---------|-------------|
| `Ctrl+P` | Apertura rapida file per nome |
| `Ctrl+Shift+P` | Tavolozza comandi |
| `Ctrl+Shift+O` | Vai al simbolo nel file |
| `Ctrl+T` | Vai al simbolo nel workspace |
| `Ctrl+G` | Vai al numero di riga |
| `F12` | Vai alla definizione |
| `Alt+F12` | Definizione in anteprima |
| `Shift+F12` | Trova tutti i riferimenti |
| `Ctrl+Shift+\` | Salta alla parentesi corrispondente |

### Navigazione Tab ed Editor

| Command | Description |
|---------|-------------|
| `Ctrl+Tab` | Scorri i tab aperti |
| `Ctrl+1 / 2 / 3` | Porta il focus al gruppo editor 1 / 2 / 3 |
| `Ctrl+\` | Dividi editor |
| `Ctrl+B` | Attiva/disattiva barra laterale |
| `Ctrl+J` | Attiva/disattiva pannello inferiore |

## Editing

### Operazioni sulle Righe

| Command | Description |
|---------|-------------|
| `Ctrl+Shift+K` | Elimina l'intera riga |
| `Alt+Su / Giù` | Sposta riga su / giù |
| `Shift+Alt+Su / Giù` | Copia riga su / giù |
| `Ctrl+Enter` | Inserisci riga sotto |
| `Ctrl+Shift+Enter` | Inserisci riga sopra |
| `Ctrl+Shift+[` | Comprimi regione |
| `Ctrl+Shift+]` | Espandi regione |

### Manipolazione del Testo

| Command | Description |
|---------|-------------|
| `Ctrl+D` | Seleziona parola (ripeti per aggiungere occorrenza successiva) |
| `Ctrl+Shift+L` | Seleziona tutte le occorrenze della selezione |
| `Ctrl+L` | Seleziona l'intera riga |
| `Ctrl+/` | Attiva/disattiva commento riga |
| `Shift+Alt+A` | Attiva/disattiva commento blocco |
| `Tab / Shift+Tab` | Indenta / riduci indentazione riga |

## Multi-Cursore

### Aggiunta di Cursori

| Command | Description |
|---------|-------------|
| `Alt+Clic` | Aggiungi cursore nella posizione cliccata |
| `Ctrl+Alt+Su / Giù` | Aggiungi cursore sopra / sotto |
| `Ctrl+D` | Aggiungi occorrenza successiva della selezione |
| `Ctrl+Shift+L` | Aggiungi cursore su tutte le occorrenze |
| `Ctrl+U` | Annulla ultima aggiunta cursore |
| `Esc` | Esci dalla modalità multi-cursore |

### Flusso di Lavoro Multi-Cursore

```
// Seleziona una parola, poi Ctrl+D per aggiungere corrispondenze
// Digita il testo — tutti i cursori si aggiornano
// Ctrl+Shift+L seleziona TUTTE le corrispondenze in una volta
// Alt+Clic per posizionamento arbitrario del cursore
```

## Terminale

### Scorciatoie Terminale

| Command | Description |
|---------|-------------|
| `Ctrl+`` | Attiva/disattiva terminale integrato |
| `Ctrl+Shift+`` | Crea nuovo terminale |
| `Ctrl+Shift+5` | Dividi terminale |
| `Ctrl+PgSu / PgGiù` | Scorri terminale su / giù |
| `Ctrl+Shift+C` | Copia selezione nel terminale |
| `Ctrl+Shift+V` | Incolla nel terminale |

### Gestione Terminale

| Command | Description |
|---------|-------------|
| `Ctrl+Shift+P → Terminal: Kill` | Termina il terminale attivo |
| `Ctrl+Shift+P → Terminal: Rename` | Rinomina la scheda terminale |
| `Menu a tendina terminale` | Passa tra terminali |
| `terminal.integrated.shell.*` | Impostazione per cambiare la shell predefinita |

## Debug

### Controlli Debug

| Command | Description |
|---------|-------------|
| `F5` | Avvia / riprendi il debug |
| `Shift+F5` | Interrompi il debug |
| `Ctrl+Shift+F5` | Riavvia il debug |
| `F9` | Attiva/disattiva punto di interruzione |
| `F10` | Esegui istruzione senza entrare |
| `F11` | Entra nell'istruzione |
| `Shift+F11` | Esci dall'istruzione |

### Esempio launch.json

```
{
  "type": "node",
  "request": "launch",
  "name": "Run App",
  "program": "${workspaceFolder}/app.js"
}
```

### Funzionalità Debug

| Command | Description |
|---------|-------------|
| `Pannello Watch` | Monitora espressioni durante il debug |
| `Call Stack` | Visualizza lo stack di esecuzione |
| `Debug Console` | Valuta espressioni al punto di interruzione |
| `Punto di interruzione condizionale` | Clic destro sul punto → Modifica condizione |
| `Logpoint` | Registra messaggio senza interrompere l'esecuzione |

## Estensioni

### Gestione Estensioni

| Command | Description |
|---------|-------------|
| `Ctrl+Shift+X` | Apri la vista Estensioni |
| `@installed` | Filtra per mostrare le estensioni installate |
| `@enabled / @disabled` | Filtra per abilitata / disabilitata |
| `@recommended` | Mostra le estensioni consigliate |

### Estensioni Essenziali

| Command | Description |
|---------|-------------|
| `Prettier` | Formattatore di codice (JS, TS, CSS, HTML) |
| `ESLint` | Linting JavaScript/TypeScript |
| `GitLens` | Integrazione Git avanzata e annotazioni |
| `Remote - SSH` | Sviluppo su macchine remote tramite SSH |
| `Live Server` | Server di sviluppo locale con ricaricamento live |
| `Thunder Client` | Client REST API integrato in VS Code |

## Impostazioni

### Accesso alle Impostazioni

| Command | Description |
|---------|-------------|
| `Ctrl+,` | Apri interfaccia Impostazioni |
| `Ctrl+Shift+P → settings.json` | Apri il JSON delle impostazioni |

### Impostazioni Comuni (JSON)

```
{
  "editor.fontSize": 14,
  "editor.tabSize": 2,
  "editor.formatOnSave": true,
  "editor.wordWrap": "on",
  "files.autoSave": "afterDelay"
}
```

### Workspace vs Utente

| Command | Description |
|---------|-------------|
| `Impostazioni utente` | Globali, si applicano a tutti i progetti |
| `Impostazioni workspace` | Per progetto, in .vscode/settings.json |
| `Workspace prevale su Utente` | Le impostazioni workspace hanno la priorità |

## Scorciatoie da Tastiera

### Personalizzazione

| Command | Description |
|---------|-------------|
| `Ctrl+K Ctrl+S` | Apri editor Scorciatoie da tastiera |
| `keybindings.json` | File JSON per associazioni personalizzate |

### Scorciatoie Essenziali

| Command | Description |
|---------|-------------|
| `Ctrl+Shift+P` | Tavolozza comandi (accede a tutto) |
| `Ctrl+P` | Apertura rapida file |
| `Ctrl+Shift+F` | Cerca in tutti i file |
| `Ctrl+H` | Trova e sostituisci nel file |
| `Ctrl+Shift+H` | Trova e sostituisci in tutti i file |
| `F2` | Rinomina simbolo |
| `Ctrl+.` | Correzione rapida (azioni codice) |
| `Ctrl+Space` | Attiva IntelliSense |
| `Ctrl+Shift+I` | Formatta documento |

## Integrazione Git

### Vista Controllo Sorgente

| Command | Description |
|---------|-------------|
| `Ctrl+Shift+G` | Apri pannello Controllo Sorgente |
| `+` | Stage delle modifiche (nella vista SCM) |
| `-` | Rimuovi dallo stage |
| `Ctrl+Enter` | Esegui commit delle modifiche in stage |
| `...` | Altre azioni (push, pull, ecc.) |

### Funzionalità Git Inline

| Command | Description |
|---------|-------------|
| `Indicatori margine` | Segni verde/blu/rosso per aggiunte/modifiche/eliminazioni |
| `Ctrl+Shift+P → Git: Checkout` | Cambia branch |
| `Ctrl+Shift+P → Git: Pull` | Pull dal remoto |
| `Ctrl+Shift+P → Git: Push` | Push al remoto |
| `Clic sull'indicatore` | Vista diff inline per le righe modificate |

### Diff e Merge

| Command | Description |
|---------|-------------|
| `SCM → Apri Modifiche` | Vista diff affiancata |
| `Frecce diff inline` | Ripristina singole modifiche |
| `Editor merge a 3 vie` | Risolvi conflitti visivamente (1.69+) |

## Pattern Comuni

### Funzionalità Workspace

| Command | Description |
|---------|-------------|
| `Ctrl+Shift+E` | Porta il focus all'esplora file |
| `Ctrl+Shift+D` | Porta il focus alla vista debug |
| `Ctrl+Shift+M` | Mostra pannello problemi |
| `Ctrl+K Ctrl+T` | Cambia tema colori |
| `Ctrl+K Z` | Entra in modalità Zen |

### Snippet

```
// File → Preferenze → Configura snippet utente
"Print": {
  "prefix": "log",
  "body": "console.log('$1');",
  "description": "Console log"
}
```

### Task (tasks.json)

```
{
  "label": "build",
  "type": "shell",
  "command": "npm run build",
  "group": "build"
}
```
