Voltar para as notas
tooling
VS Code

Arquivos de configuração do VSCode

Configuração completa do VSCode e VSCodium com lista de extensões e backup de settings para migrar facilmente entre instalações.

Este snippet contém meus arquivos pessoais de configuração do VSCode para facilitar a migração para o VSCodium ou para instalações novas do VSCode. Inclui uma lista bem completa de extensões e configurações detalhadas do editor.

Estas são configurações pessoais. Revise e ajuste antes de aplicar no seu ambiente. Algumas opções como caminhos de arquivos, chaves de API e preferências podem precisar de personalização.

Lista de extensões

Salve este arquivo como extensions.txt para manter um backup de todas as extensões instaladas:

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

Configuração de settings

Salve este arquivo como settings.json na pasta de configurações de usuário do VSCode ou VSCodium:

{
  "workbench.sideBar.location": "right",
  "files.autoSave": "onWindowChange",
  "editor.fontFamily": "'Fira Code'",
  "editor.fontWeight": "300",
  "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
}

Onde ficam as configurações

Windows

  • Settings: %APPDATA%\Code\User\settings.json
  • VSCodium: %APPDATA%\VSCodium\User\settings.json

Linux

  • Settings: ~/.config/Code/User/settings.json
  • VSCodium: ~/.config/VSCodium/User/settings.json

macOS

  • Settings: ~/Library/Application Support/Code/User/settings.json
  • VSCodium: ~/Library/Application Support/VSCodium/User/settings.json

Sincronização automática: VSCode para VSCodium

Em vez de copiar arquivos e instalar extensões na mão, você pode automatizar tudo com estes scripts. Eles copiam as configurações (settings, keybindings, snippets, profiles) do VSCode para o VSCodium e instalam todas as extensões automaticamente.

Script PowerShell

Funciona no Windows e no Linux com PowerShell 7.

Salve como 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) {
        $cmd = Get-Command $Preferred -ErrorAction SilentlyContinue
        if ($cmd) { return $cmd.Source }
        if (Test-Path $Preferred) { return $Preferred }
    }

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

    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

$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"
}

$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"
}

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

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

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

    $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."
}

Uso no Windows

Rode com PowerShell 7:

.\sync-vscode-to-vscodium.ps1

Se não achar o VSCodium automaticamente, passe o caminho:

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

Uso no Linux com PowerShell 7

Se tiver pwsh instalado:

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

Ou informe um comando customizado:

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

Script Bash (somente Linux)

Salve como 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"

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"

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

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

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

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."

Uso no Linux

Primeiro, deixe executável:

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

Se o comando do VSCodium for vscodium em vez de codium:

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

Instalação manual de extensões

Se preferir instalar manualmente usando um 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 $_ }

Para VSCodium

Troque code por codium:

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

Principais destaques

Melhorias do editor

  • Fonte: Fira Code com ligaduras ativadas
  • Animações suaves: cursor e rolagem
  • Auto-save: ao trocar de janela
  • Formatar ao salvar: ativado

Integração com Git

  • Auto-fetch ativado
  • Smart commit ativado
  • GitLens com recursos de IA experimentais
  • Integração com pull requests

Tema e ícones

  • Tema: Shades of Purple (Super Dark)
  • Ícones: vscode-icons

Formatadores por linguagem

  • JavaScript/TypeScript: formatador nativo
  • Python: autopep8
  • Markdown: markdownlint
  • XML: DotJoshJohnson.xml
  • JSON: formatador nativo
  • HTML: formatador nativo

Privacidade e performance

  • Telemetria desativada
  • Auto-updates desativados
  • Cloud sync desativado
  • Recomendações de extensões ignoradas

O arquivo settings.json contém uma chave de API (gitCommitSuggestions.openAIKey). Remova ou substitua por uma chave sua, ou melhor ainda, use variáveis de ambiente para dados sensíveis.

Antes de aplicar em uma instalação nova, revise cada configuração para garantir que bate com seu fluxo de trabalho. Algumas opções, como caminhos de arquivo, podem precisar de ajuste para o seu ambiente.