# Référence rapide VS Code

*Navigation, édition, multi-curseur, terminal, débogage, extensions*

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

## Navigation

### Navigation fichiers et symboles

| Command | Description |
|---------|-------------|
| `Ctrl+P` | Ouverture rapide d'un fichier par nom |
| `Ctrl+Shift+P` | Palette de commandes |
| `Ctrl+Shift+O` | Aller au symbole dans le fichier |
| `Ctrl+T` | Aller au symbole dans l'espace de travail |
| `Ctrl+G` | Aller au numéro de ligne |
| `F12` | Aller à la définition |
| `Alt+F12` | Aperçu de la définition |
| `Shift+F12` | Trouver toutes les références |
| `Ctrl+Shift+\` | Sauter à l'accolade correspondante |

### Navigation onglets et éditeurs

| Command | Description |
|---------|-------------|
| `Ctrl+Tab` | Parcourir les onglets ouverts |
| `Ctrl+1 / 2 / 3` | Mettre le focus sur le groupe d'éditeur 1 / 2 / 3 |
| `Ctrl+\` | Diviser l'éditeur |
| `Ctrl+B` | Afficher/masquer la barre latérale |
| `Ctrl+J` | Afficher/masquer le panneau inférieur |

## Édition

### Opérations sur les lignes

| Command | Description |
|---------|-------------|
| `Ctrl+Shift+K` | Supprimer la ligne entière |
| `Alt+Up / Down` | Déplacer la ligne vers le haut / bas |
| `Shift+Alt+Up / Down` | Copier la ligne vers le haut / bas |
| `Ctrl+Enter` | Insérer une ligne en-dessous |
| `Ctrl+Shift+Enter` | Insérer une ligne au-dessus |
| `Ctrl+Shift+[` | Replier la région |
| `Ctrl+Shift+]` | Déplier la région |

### Manipulation du texte

| Command | Description |
|---------|-------------|
| `Ctrl+D` | Sélectionner le mot (répéter pour ajouter la correspondance suivante) |
| `Ctrl+Shift+L` | Sélectionner toutes les occurrences de la sélection |
| `Ctrl+L` | Sélectionner la ligne entière |
| `Ctrl+/` | Basculer le commentaire de ligne |
| `Shift+Alt+A` | Basculer le commentaire de bloc |
| `Tab / Shift+Tab` | Indenter / désindenter la ligne |

## Multi-curseur

### Ajouter des curseurs

| Command | Description |
|---------|-------------|
| `Alt+Click` | Ajouter un curseur à la position cliquée |
| `Ctrl+Alt+Up / Down` | Ajouter un curseur au-dessus / en-dessous |
| `Ctrl+D` | Ajouter l'occurrence suivante de la sélection |
| `Ctrl+Shift+L` | Ajouter un curseur à toutes les occurrences |
| `Ctrl+U` | Annuler le dernier ajout de curseur |
| `Esc` | Quitter le mode multi-curseur |

### Flux de travail multi-curseur

```
// Select a word, then Ctrl+D to add matches
// Type replacement — all cursors update
// Ctrl+Shift+L selects ALL matches at once
// Alt+Click for arbitrary cursor placement
```

## Terminal

### Raccourcis du terminal

| Command | Description |
|---------|-------------|
| `Ctrl+`` | Afficher/masquer le terminal intégré |
| `Ctrl+Shift+`` | Créer un nouveau terminal |
| `Ctrl+Shift+5` | Diviser le terminal |
| `Ctrl+PgUp / PgDn` | Faire défiler le terminal vers le haut / bas |
| `Ctrl+Shift+C` | Copier la sélection dans le terminal |
| `Ctrl+Shift+V` | Coller dans le terminal |

### Gestion du terminal

| Command | Description |
|---------|-------------|
| `Ctrl+Shift+P → Terminal: Kill` | Fermer le terminal actif |
| `Ctrl+Shift+P → Terminal: Rename` | Renommer l'onglet du terminal |
| `Terminal dropdown` | Passer d'un terminal à l'autre |
| `terminal.integrated.shell.*` | Paramètre pour changer le shell par défaut |

## Débogage

### Contrôles de débogage

| Command | Description |
|---------|-------------|
| `F5` | Démarrer / continuer le débogage |
| `Shift+F5` | Arrêter le débogage |
| `Ctrl+Shift+F5` | Redémarrer le débogage |
| `F9` | Activer/désactiver un point d'arrêt |
| `F10` | Pas principal (step over) |
| `F11` | Entrer dans (step into) |
| `Shift+F11` | Sortir de (step out) |

### Exemple launch.json

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

### Fonctionnalités de débogage

| Command | Description |
|---------|-------------|
| `Watch panel` | Surveiller des expressions pendant le débogage |
| `Call Stack` | Voir la pile d'appels d'exécution |
| `Debug Console` | Évaluer des expressions au point d'arrêt |
| `Conditional breakpoint` | Clic droit sur le point d'arrêt → Modifier la condition |
| `Logpoint` | Journaliser un message sans arrêter l'exécution |

## Extensions

### Gestion des extensions

| Command | Description |
|---------|-------------|
| `Ctrl+Shift+X` | Ouvrir la vue Extensions |
| `@installed` | Filtrer pour afficher les extensions installées |
| `@enabled / @disabled` | Filtrer par activé / désactivé |
| `@recommended` | Afficher les extensions recommandées |

### Extensions essentielles

| Command | Description |
|---------|-------------|
| `Prettier` | Formateur de code (JS, TS, CSS, HTML) |
| `ESLint` | Lint JavaScript/TypeScript |
| `GitLens` | Intégration Git améliorée et annotation |
| `Remote - SSH` | Développer sur des machines distantes via SSH |
| `Live Server` | Serveur de développement local avec rechargement en direct |
| `Thunder Client` | Client REST API intégré dans VS Code |

## Paramètres

### Accéder aux paramètres

| Command | Description |
|---------|-------------|
| `Ctrl+,` | Ouvrir l'interface des paramètres |
| `Ctrl+Shift+P → settings.json` | Ouvrir le JSON des paramètres |

### Paramètres courants (JSON)

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

### Espace de travail vs utilisateur

| Command | Description |
|---------|-------------|
| `User settings` | Globaux, s'appliquent à tous les projets |
| `Workspace settings` | Par projet, dans .vscode/settings.json |
| `Workspace overrides User` | Les paramètres de l'espace de travail ont la priorité |

## Raccourcis clavier

### Personnalisation

| Command | Description |
|---------|-------------|
| `Ctrl+K Ctrl+S` | Ouvrir l'éditeur de raccourcis clavier |
| `keybindings.json` | Fichier JSON pour les liaisons personnalisées |

### Raccourcis essentiels

| Command | Description |
|---------|-------------|
| `Ctrl+Shift+P` | Palette de commandes (accès à tout) |
| `Ctrl+P` | Ouverture rapide de fichier |
| `Ctrl+Shift+F` | Rechercher dans tous les fichiers |
| `Ctrl+H` | Rechercher et remplacer dans le fichier |
| `Ctrl+Shift+H` | Rechercher et remplacer dans tous les fichiers |
| `F2` | Renommer le symbole |
| `Ctrl+.` | Correction rapide (actions de code) |
| `Ctrl+Space` | Déclencher IntelliSense |
| `Ctrl+Shift+I` | Formater le document |

## Intégration Git

### Vue du contrôle de source

| Command | Description |
|---------|-------------|
| `Ctrl+Shift+G` | Ouvrir le panneau de contrôle de source |
| `+` | Indexer les modifications (dans la vue SCM) |
| `-` | Désindexer les modifications |
| `Ctrl+Enter` | Valider les modifications indexées |
| `...` | Plus d'actions (push, pull, etc.) |

### Fonctionnalités Git en ligne

| Command | Description |
|---------|-------------|
| `Gutter indicators` | Marques verte/bleue/rouge pour ajouté/modifié/supprimé |
| `Ctrl+Shift+P → Git: Checkout` | Changer de branche |
| `Ctrl+Shift+P → Git: Pull` | Tirer depuis le dépôt distant |
| `Ctrl+Shift+P → Git: Push` | Pousser vers le dépôt distant |
| `Click gutter change` | Vue diff en ligne pour les lignes modifiées |

### Diff et fusion

| Command | Description |
|---------|-------------|
| `SCM → Open Changes` | Vue diff côte à côte |
| `Inline diff arrows` | Annuler des modifications individuelles |
| `3-way merge editor` | Résoudre les conflits visuellement (1.69+) |

## Modèles courants

### Fonctionnalités de l'espace de travail

| Command | Description |
|---------|-------------|
| `Ctrl+Shift+E` | Mettre le focus sur l'explorateur de fichiers |
| `Ctrl+Shift+D` | Mettre le focus sur la vue de débogage |
| `Ctrl+Shift+M` | Afficher le panneau des problèmes |
| `Ctrl+K Ctrl+T` | Changer le thème de couleur |
| `Ctrl+K Z` | Entrer en mode Zen |

### Extraits de code

```
// File → Preferences → Configure Snippets
"Print": {
  "prefix": "log",
  "body": "console.log('$1');",
  "description": "Console log"
}
```

### Tâches (tasks.json)

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