Retour aux notes
tooling
VS Code

Fichiers de configuration de VSCode

Configuration complète de VSCode/VSCodium avec une liste d'extensions et une sauvegarde des paramètres pour une migration facile entre les installations.

Ce fragment contient mes fichiers de configuration personnels pour VSCode pour une migration facile vers VSCodium ou de nouvelles installations de VSCode. Il inclut une liste complète d’extensions et des paramètres détaillés de l’éditeur.

Ce sont mes configurations personnelles. Passez en revue et ajustez les paramètres avant de les appliquer à votre configuration. Certains paramètres comme les chemins de fichiers, les clés API et les préférences peuvent nécessiter une personnalisation pour votre environnement.

Liste des extensions

Enregistrez ce fichier sous extensions.txt pour garder une trace de toutes les extensions installées :

ahmadawais.shades-of-purple
continue.continue
davidanson.vscode-markdownlint
donjayamanne.githistory
dotjoshjohnson.xml
eamodio.gitlens
esbenp.prettier-vscode
garmin.monkey-c
github.vscode-pull-request-github
hbenl.vscode-test-explorer
icrawl.discord-vscode
lokalise.i18n-ally
ms-python.autopep8
ms-python.debugpy
ms-python.python
ms-python.vscode-pylance
ms-python.vscode-python-envs
ms-vscode.test-adapter-converter
quick-lint.quick-lint-js
redhat.vscode-xml
ritwickdey.liveserver
saoudrizwan.claude-dev
sirmspencer.vscode-autohide
usernamehw.errorlens
vscode-icons-team.vscode-icons
wakatime.vscode-wakatime

Configuration des paramètres

Enregistrez ce fichier sous settings.json dans le répertoire des paramètres utilisateur de VSCode/VSCodium :

{
  "workbench.sideBar.location": "right",
  "files.autoSave": "onWindowChange",
  "editor.fontFamily": "'Fira Code'",
  "editor.fontWeight": "300", // Light
  "editor.fontLigatures": true,
  "editor.smoothScrolling": true,
  "editor.cursorSmoothCaretAnimation": "explicit",
  "editor.cursorBlinking": "expand",
  "editor.formatOnSave": true,
  "workbench.cloudChanges.autoResume": "off",
  "update.enableWindowsBackgroundUpdates": false,
  "telemetry.telemetryLevel": "off",
  "window.restoreWindows": "none",
  "window.commandCenter": true,
  "git.autofetch": true,
  "security.workspace.trust.untrustedFiles": "newWindow",
  "workbench.colorTheme": "Shades of Purple (Super Dark)",
  "editor.inlineSuggest.enabled": true,
  "git.enableSmartCommit": true,
  "git.confirmSync": false,
  "liveServer.settings.fullReload": true,
  "liveServer.settings.useLocalIp": true,
  "[javascript]": {
    "editor.defaultFormatter": "vscode.typescript-language-features"
  },
  "[markdown]": {
    "editor.defaultFormatter": "DavidAnson.vscode-markdownlint"
  },

  "github.copilot.enable": {
    "*": true,
    "plaintext": true,
    "markdown": false,
    "scminput": false,
    "typescriptreact": true
  },
  "git.openRepositoryInParentFolders": "never",
  "typescript.updateImportsOnFileMove.enabled": "always",
  "explorer.confirmDragAndDrop": false,
  "explorer.confirmDelete": false,
  "editor.unicodeHighlight.nonBasicASCII": false,
  "diffEditor.maxComputationTime": 0,
  "[xml]": {
    "editor.defaultFormatter": "DotJoshJohnson.xml"
  },
  "[python]": {
    "editor.defaultFormatter": "ms-python.autopep8"
  },
  "[typescriptreact]": {
    "editor.defaultFormatter": "vscode.typescript-language-features"
  },
  "update.mode": "none",
  "[typescript]": {},
  "editor.autoClosingComments": "always",
  "editor.bracketPairColorization.independentColorPoolPerBracketType": true,
  "workbench.experimental.cloudChanges.autoStore": "onShutdown",
  "workbench.list.smoothScrolling": true,
  "workbench.preferredLightColorTheme": "Shades of Purple",
  "workbench.cloudChanges.continueOn": "off",
  "workbench.iconTheme": "vscode-icons",
  "prettier.endOfLine": "auto",
  "prettier.useTabs": true,
  "editor.formatOnPaste": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "workbench.editor.restoreViewState": false,
  "files.associations": {
    "*.tpl": "markdown",
    "*.mdx": "markdown"
  },
  "diffEditor.ignoreTrimWhitespace": false,
  "gitlens.ai.experimental.provider": "anthropic",
  "gitlens.ai.experimental.anthropic.model": "claude-2.1",
  "vsicons.dontShowNewVersionMessage": true,
  "gitCommitSuggestions.openAIKey": "sk-whoKnows",
  "editor.unicodeHighlight.invisibleCharacters": false,
  "editor.stickyScroll.enabled": false,
  "css.lint.unknownAtRules": "ignore",
  "extensions.ignoreRecommendations": true,
  "extensions.autoCheckUpdates": false,
  "extensions.autoUpdate": false,
  "git.replaceTagsWhenPull": true,
  "discord.suppressNotifications": true,
  "discord.removeRemoteRepository": true,
  "discord.lowerDetailsEditing": " {dir_name}",
  "discord.lowerDetailsDebugging": "Debugging: {file_name}",
  "gitlens.advanced.messages": {
    "suppressLineUncommittedWarning": true
  },
  "workbench.editorAssociations": {
    "*.db-shm": "default",
    "*.dll": "default"
  },
  "editor.unicodeHighlight.ambiguousCharacters": false,
  "editor.largeFileOptimizations": false,
  "editor.minimap.size": "fit",
  "[json]": {
    "editor.defaultFormatter": "vscode.json-language-features"
  },
  "security.allowedUNCHosts": ["100.83.216.64"],
  "workbench.startupEditor": "none",
  "monkeyC.developerKeyPath": "c:\\Users\\isy\\Documents\\GitHub\\yurounded\\developer_key",
  "window.confirmSaveUntitledWorkspace": false,
  "window.customTitleBarVisibility": "windowed",
  "[html]": {
    "editor.defaultFormatter": "vscode.html-language-features"
  },
  "workbench.secondarySideBar.defaultVisibility": "hidden",
  "chat.disableAIFeatures": true
}

Emplacements de configuration

Windows

  • Paramètres : %APPDATA%\Code\User\settings.json
  • VSCodium : %APPDATA%\VSCodium\User\settings.json

Linux

  • Paramètres : ~/.config/Code/User/settings.json
  • VSCodium : ~/.config/VSCodium/User/settings.json

macOS

  • Paramètres : ~/Library/Application Support/Code/User/settings.json
  • VSCodium : ~/Library/Application Support/VSCodium/User/settings.json

Synchronisation automatisée : VSCode → VSCodium

Au lieu de copier manuellement les fichiers et d’installer les extensions, vous pouvez automatiser l’ensemble du processus avec ces scripts. Ils copient toutes les configurations (paramètres, raccourcis clavier, extraits de code, profils) de VSCode vers VSCodium et installent automatiquement toutes vos extensions.

Script PowerShell (Multiplateforme)

Ce script fonctionne à la fois sur Windows et Linux avec PowerShell 7.

Enregistrez sous sync-vscode-to-vscodium.ps1 :

param(
    [string]$VSCodiumCli = ""
)

# script to copy vscode configs to vscodium
# and sync extensions (vscode -> vscodium)

function Get-VSCodeUserDir {
    if ($IsWindows) {
        return (Join-Path $env:APPDATA "Code\User")
    } elseif ($IsLinux -or $IsMacOS) {
        return "$HOME/.config/Code/User"
    } else {
        throw "operating system not supported"
    }
}

function Get-VSCodiumUserDir {
    if ($IsWindows) {
        return (Join-Path $env:APPDATA "VSCodium\User")
    } elseif ($IsLinux -or $IsMacOS) {
        return "$HOME/.config/VSCodium/User"
    } else {
        throw "operating system not supported"
    }
}

function Find-VSCodiumCli {
    param([string]$Preferred)

    if ($Preferred) {
        # if user provided a path, try it first
        $cmd = Get-Command $Preferred -ErrorAction SilentlyContinue
        if ($cmd) { return $cmd.Source }
        if (Test-Path $Preferred) { return $Preferred }
    }

    # try common names in path
    foreach ($name in "codium", "vscodium") {
        $cmd = Get-Command $name -ErrorAction SilentlyContinue
        if ($cmd) { return $cmd.Source }
    }

    # try default paths by system
    if ($IsWindows) {
        $candidates = @(
            "$env:LOCALAPPDATA\Programs\VSCodium\VSCodium.exe",
            "C:\Program Files\VSCodium\VSCodium.exe"
        )
    } else {
        $candidates = @(
            "/usr/bin/codium",
            "/usr/local/bin/codium",
            "/snap/bin/codium"
        )
    }

    foreach ($path in $candidates) {
        if (Test-Path $path) { return $path }
    }

    throw "could not find vscodium executable. pass the path in -VSCodiumCli"
}

Write-Host "=== sync vscode -> vscodium ==="

$vsCodeUser = Get-VSCodeUserDir
$vscodiumUser = Get-VSCodiumUserDir

if (-not (Test-Path $vsCodeUser)) {
    throw "vscode configuration folder not found: $vsCodeUser"
}

New-Item -ItemType Directory -Path $vscodiumUser -Force | Out-Null

Write-Host "vscode folder  :" $vsCodeUser
Write-Host "vscodium folder:" $vscodiumUser

# copy settings.json
$settings = Join-Path $vsCodeUser "settings.json"
if (Test-Path $settings) {
    Copy-Item $settings $vscodiumUser -Force
    Write-Host "copied settings.json"
} else {
    Write-Host "warning: settings.json not found in vscode"
}

# copy keybindings.json
$keybindings = Join-Path $vsCodeUser "keybindings.json"
if (Test-Path $keybindings) {
    Copy-Item $keybindings $vscodiumUser -Force
    Write-Host "copied keybindings.json"
} else {
    Write-Host "warning: keybindings.json not found in vscode"
}

# copy snippets
$snippets = Join-Path $vsCodeUser "snippets"
if (Test-Path $snippets) {
    Copy-Item $snippets $vscodiumUser -Recurse -Force
    Write-Host "copied snippets directory"
}

# copy profiles (if exists)
$profiles = Join-Path $vsCodeUser "profiles"
if (Test-Path $profiles) {
    Copy-Item $profiles $vscodiumUser -Recurse -Force
    Write-Host "copied profiles directory"
}

# export vscode extensions list
Write-Host ""
Write-Host "exporting vscode extensions..."

$extensions = @()
try {
    $extensions = code --list-extensions
} catch {
    Write-Host "error running 'code --list-extensions'. check if the 'code' command works in terminal."
}

if (-not $extensions -or $extensions.Count -eq 0) {
    Write-Host "no extensions found or 'code' command did not work."
} else {
    $backupFile = Join-Path $HOME "vscode-extensions-$(Get-Date -Format 'yyyyMMdd-HHmmss').txt"
    $extensions | Set-Content -Encoding UTF8 $backupFile
    Write-Host "extensions list saved to:" $backupFile

    # find vscodium cli
    $vscodiumCliPath = Find-VSCodiumCli -Preferred $VSCodiumCli
    Write-Host ""
    Write-Host "using vscodium cli:" $vscodiumCliPath
    Write-Host ""
    Write-Host "installing extensions in vscodium..."

    foreach ($ext in $extensions) {
        if ([string]::IsNullOrWhiteSpace($ext)) { continue }
        Write-Host "  installing $ext"
        try {
            & $vscodiumCliPath --install-extension $ext | Out-Null
        } catch {
            Write-Host "  failed to install $ext"
        }
    }

    Write-Host ""
    Write-Host "sync completed."
}

Utilisation sous Windows

Exécutez le script avec PowerShell 7 :

.\sync-vscode-to-vscodium.ps1

Si le script ne trouve pas automatiquement VSCodium, spécifiez le chemin :

.\sync-vscode-to-vscodium.ps1 -VSCodiumCli "C:\Program Files\VSCodium\VSCodium.exe"

Utilisation sous Linux avec PowerShell 7

Si vous avez pwsh installé :

pwsh ./sync-vscode-to-vscodium.ps1

Ou spécifiez une commande personnalisée pour VSCodium :

pwsh ./sync-vscode-to-vscodium.ps1 -VSCodiumCli vscodium

Script Bash (Linux uniquement)

Enregistrez sous sync-vscode-to-vscodium.sh :

#!/usr/bin/env bash
set -e

# simple script to sync vscode -> vscodium on linux

VSCODE_USER="$HOME/.config/Code/User"
VSCODIUM_USER="$HOME/.config/VSCodium/User"

# allow overriding command via environment variable
VSCODIUM_CLI="${VSCODIUM_CLI:-codium}"

echo "vscode folder   : $VSCODE_USER"
echo "vscodium folder : $VSCODIUM_USER"
echo "vscodium cli   : $VSCODIUM_CLI"
echo

if [ ! -d "$VSCODE_USER" ]; then
  echo "error: vscode folder not found: $VSCODE_USER"
  exit 1
fi

mkdir -p "$VSCODIUM_USER"

# copy settings
if [ -f "$VSCODE_USER/settings.json" ]; then
  cp "$VSCODE_USER/settings.json" "$VSCODIUM_USER/"
  echo "copied settings.json"
fi

# copy keybindings
if [ -f "$VSCODE_USER/keybindings.json" ]; then
  cp "$VSCODE_USER/keybindings.json" "$VSCODIUM_USER/"
  echo "copied keybindings.json"
fi

# copy snippets
if [ -d "$VSCODE_USER/snippet" ]; then
  cp -r "$VSCODE_USER/snippet" "$VSCODIUM_USER/"
  echo "copied snippets directory"
fi

# copy profiles
if [ -d "$VSCODE_USER/profiles" ]; then
  cp -r "$VSCODE_USER/profiles" "$VSCODIUM_USER/"
  echo "copied profiles directory"
fi

echo
echo "exporting vscode extensions..."

if ! command -v code >/dev/null 2>&1; then
  echo "error: 'code' command not found in path."
  exit 1
fi

EXT_FILE="$HOME/vscode-extensions-$(date +%Y%m%d-%H%M%S).txt"
code --list-extensions > "$EXT_FILE"

echo "extensions list saved to: $EXT_FILE"
echo

if ! command -v "$VSCODIUM_CLI" >/dev/null 2>&1; then
  echo "error: '$VSCODIUM_CLI' command not found. adjust VSCODIUM_CLI variable."
  exit 1
fi

echo "installing extensions in vscodium..."

while IFS= read -r ext; do
  [ -z "$ext" ] && continue
  echo "  installing $ext"
  "$VSCODIUM_CLI" --install-extension "$ext" >/dev/null 2>&1 || echo "  failed to install $ext"
done < "$EXT_FILE"

echo
echo "sync completed."

Utilisation sous Linux

Tout d’abord, rendez le script exécutable :

chmod +x sync-vscode-to-vscodium.sh
./sync-vscode-to-vscodium.sh

Si votre commande VSCodium est vscodium au lieu de codium :

VSCODIUM_CLI=vscodium ./sync-vscode-to-vscodium.sh

Installation manuelle des extensions

Si vous préférez installer manuellement les extensions à partir d’un fichier extensions.txt :

Bash (Linux/macOS)

cat extensions.txt | xargs -L 1 code --install-extension

PowerShell (Windows)

Get-Content extensions.txt | ForEach-Object { code --install-extension $_ }

Pour VSCodium

Remplacez code par codium dans les commandes ci-dessus :

cat extensions.txt | xargs -L 1 codium --install-extension

Fonctionnalités clés

Améliorations de l’éditeur

  • Police : Fira Code avec les ligatures activées
  • Animations fluides : Curseur et défilement
  • Sauvegarde automatique : Lors du changement de fenêtre
  • Formatage à la sauvegarde : Activé

Intégration Git

  • Récupération automatique activée
  • Validations intelligentes activées
  • GitLens avec des fonctionnalités expérimentales d’IA
  • Intégration des demandes de tirage

Thème et icônes

  • Thème : Shades of Purple (Super Dark)
  • Icônes : vscode-icons

Formateurs spécifiques aux langages

  • JavaScript/TypeScript : Formateur intégré
  • Python : autopep8
  • Markdown : markdownlint
  • XML : DotJoshJohnson.xml
  • JSON : Formateur intégré
  • HTML : Formateur intégré

Vie privée et performance

  • Télémétrie désactivée
  • Mises à jour automatiques désactivées
  • Synchronisation cloud désactivée
  • Recommandations d’extensions ignorées

Le fichier settings.json contient une clé API (gitCommitSuggestions.openAIKey). Assurez-vous de supprimer ou de remplacer cette clé par la vôtre, ou mieux encore, utilisez des variables d’environnement pour les données sensibles.

Avant d’appliquer ces paramètres à une nouvelle installation, passez en revue chaque paramètre pour vous assurer qu’il correspond à votre flux de travail et à vos préférences. Certains paramètres, comme les chemins de fichiers, peuvent nécessiter des ajustements pour votre environnement.