VSCode â Settings, extensions et configuration
Référence rapide pour VSCode : extensions essentielles, settings, raccourcis, snippets et structure de dossier .vscode/.
Extensions incontournables
InstallĂ©es dans cet ordre dâutilitĂ© (copier-coller depuis le terminal) :
# Langage et structure
code --install-extension dbaeumer.vscode-eslint
code --install-extension esbenp.prettier-vscode
code --install-extension ms-python.python
code --install-extension ms-vscode.cpptools
# Git et collaboration
code --install-extension ms-vscode.gitlens
code --install-extension github.copilot
# Connecteurs
code --install-extension ms-azuretools.vscode-docker
code --install-extension ms-vscode-remote.remote-containersLes extensions marquĂ©es @recommended dans un fichier .vscode/extensions.json sâinstallent automatiquement Ă la rĂ©ouverture du workspace. Ăviter de forcer lâinstallation de Copilot en extension globale si le projet nâen a pas besoin â la limite de requĂȘtes est partagĂ©e entre toutes les sessions de la machine.
Structure .vscode/ dans le projet
Ranger cette arborescence à la racine du dépÎt pour versionner les settings projet :
mon-projet/
âââ .vscode/
â âââ extensions.json # Extensions recommandĂ©es par le projet
â âââ settings.json # Settings spĂ©cifiques au projet
â âââ launch.json # Configurations de dĂ©bogage
â âââ tasks.json # TĂąches (build, test, lint)
â âââ snippets/ # Snippets partagĂ©s par l'Ă©quipeextensions.json :
{
"recommendations": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"ms-python.python"
],
"unwantedRecommendations": [
"some.extension.à éviter"
]
}Settings (.vscode/settings.json)
Settings valorisés au niveau workspace :
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.tabSize": 2,
"editor.rulers": [100],
"editor.quickSuggestions": {
"other": true,
"comments": false,
"strings": false
},
"files.trimTrailingWhitespace": true,
"files.insertFinalNewline": true,
"search.exclude": {
"**/node_modules": true,
"**/.git": true,
"**/dist": true
}
}Les settings workspace (workspaceFolder/.vscode/settings.json) Ă©crasent les settings utilisateur (%APPDATA%/Code/User/settings.json). Pour des settings machine-wide qui ne doivent pas ĂȘtre commitĂ©s : Ă©diter directement le fichier utilisateur via Ctrl+Shift+P â « Open User Settings (JSON) ».
Launch.json â Configurations de dĂ©bogage
Exemples pour Node.js et Python :
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Debug Server",
"program": "${workspaceFolder}/src/index.js",
"cwd": "${workspaceFolder}",
"runtimeArgs": ["--enable-source-maps"],
"env": { "NODE_ENV": "development" }
},
{
"type": "python",
"request": "launch",
"name": "Debug Python",
"program": "${workspaceFolder}/main.py",
"cwd": "${workspaceFolder}",
"env": { "PYTHONPATH": "${workspaceFolder}" },
"justMyCode": true
}
]
}Snippets VSCode
Exemple de snippet TypeScript dans .vscode/snippets/typescript.json :
{
"env node script": {
"prefix": "envnode",
"body": [
"const env = process.env;",
"const port = env.PORT || 3000;",
"console.log(`Listening on $${port}`);",
""
],
"description": "Script Node avec PORT et fallback"
},
"async try/catch": {
"prefix": "tryas",
"body": [
"try {",
"\t$1",
"} catch (err) {",
"\tconsole.error(err);",
"\tthrow err;",
"}"
],
"description": "Bloc async try/catch"
}
}Keybindings (.vscode/keybindings.json)
Bindings personnalisés à scope workspace (ajoutés dans .vscode/keybindings.json) pour les opérations répétitives.
{
"keybindings": [
{
"key": "ctrl+shift+n",
"command": "editor.action.addSelectionToNextFindMatch",
"when": "editorFocus"
},
{
"key": "ctrl+alt+j",
"command": "editor.action.inlineSuggest.commit",
"when": "inlineSuggestionVisible && editorTextFocus"
},
{
"key": "ctrl+alt+k",
"command": "editor.action.inlineSuggest.hide",
"when": "inlineSuggestionVisible && editorTextFocus"
},
{
"key": "ctrl+shift+alt+p",
"command": "workbench.action.terminal.runProfile",
"args": { "profileName": "default" }
}
]
}Convention : préfixer les bindings personnels avec Ctrl+Alt+ pour éviter les conflits avec les bindings intégrés de VSCode. Ctrl+Shift+ est souvent réservé par les extensions (ex. Ctrl+Shift+P = palette).
Pour appliquer ces bindings uniquement à un projet, placer le fichier dans .vscode/keybindings.json du workspace. Ils écraseront les bindings utilisateur (keybindings.json global) pour ce projet uniquement. Vérifier avec Ctrl+K Ctrl+X pour lister les bindings actifs et leur origine.
Raccourcis VSCode (Linux/macOS)
Raccourcis à retenir en priorité :
| Action | Raccourci |
|---|---|
| Palette de commandes | Ctrl+Shift+P (Linux/Win) / Cmd+Shift+P (macOS) |
| Switcher un fichier | Ctrl+P / Cmd+P |
| Multi-curseur Ă la souris | Alt+Clic (Linux) / Option+Clic (macOS) |
| Multi-curseur Ă la colonne | Ctrl+Shift+Alt+Clic (Linux) / Cmd+Option+Clic (macOS) |
| DĂ©placer une ligne | Alt+â / Alt+â |
| Dupliquer une ligne | Shift+Alt+â |
| Reformater | Shift+Alt+F |
| Revenir en arriĂšre | Ctrl+Alt+â / Cmd+Option+â |
Pour lister tous les raccourcis : Ctrl+K Ctrl+S (Linux/Win) / Cmd+K Cmd+S (macOS).
Ctrl+Shift+P â « Preferences: Open Keyboard Shortcuts (JSON) » permet dâĂ©diter directement keybindings.json pour override de raccourcis spĂ©cifiques Ă un projet.
TĂąches (.vscode/tasks.json)
DĂ©finir des commandes utilisables via Ctrl+Shift+P â « Run Task » :
{
"version": "2.0.0",
"tasks": [
{
"label": "Build",
"type": "shell",
"command": "npm run build",
"group": { "kind": "build", "isDefault": true },
"problemMatcher": ["$eslint-compact"]
},
{
"label": "Lint",
"type": "shell",
"command": "npm run lint",
"group": "test",
"problemMatcher": ["$tsc"]
},
{
"label": "Start Dev Server",
"type": "shell",
"command": "npm start",
"isBackground": true,
"presentation": { "reveal": "always" }
}
]
}PiÚges fréquents
-
settings.jsonworkspace vs utilisateur : les deux fichiers utilisent exactement la mĂȘme syntaxe, mais ne pas confondre leur origine. UnCtrl+Shift+Pâ « Open Workspace Settings (JSON) » ouvre le bon fichier. Oublier cette distinction est la cause n°1 de settings qui « ne prennent pas effet ». -
.vscode/ignoré pargitignore: le dossier.vscode/est par défaut dans le.gitignoreglobal VSCode. Pour le versionner, vérifier explicitement dans le.gitignoredu projet. -
IcĂŽnes dans le coin gauche qui ne sâaffichent plus : souvent causĂ© par un cache VSCode corrompu. RĂ©solution :
Ctrl+Shift+Pâ « Developer: Reload Window ». -
Indentation mixte tabulations/espaces : le message
Detected an indentation issuedans la barre de statut indique un conflit. Forcer avecCtrl+Shift+Pâ « Change Indentation for Files Indented With Tabs to Spaces of Size⊠». -
tasks.jsonavecproblemMatcherincorrect : un matcher mal configurĂ© fait que les erreurs du build nâapparaissent pas dans le panneau Problems, mĂȘme si le build Ă©choue. VĂ©rifier chaque fois avecCtrl+Shift+Pâ « Run Build Task » et observer le panneau Problems. -
Extensions installées mais pas dans
extensions.json:code --list-extensionsmontre les extensions installĂ©es. Pour les partager Ă lâĂ©quipe, exporter aveccode --list-extensions > .vscode/extensions.txtet transformer en format JSON recommandĂ©.