Un IDE no es productivo por sí mismo — lo es cuando lo configuras para que se adapte a tu flujo. Visual Studio Code es el editor más popular porque su modelo de extensiones y configuración permite personalizar cada aspecto. Aquí cubro los patrones que separan a los que "usan VS Code" de los que lo dominan.
Atajos — modo teclado completo
Los comandos esenciales que deberías memorizar:
Navegación
| Atajo (macOS) | Atajo (Win/Linux) | Acción |
|---|---|---|
Cmd+P |
Ctrl+P |
Navegación rápida a archivo |
Cmd+Shift+P |
Ctrl+Shift+P |
Paleta de comandos |
Cmd+B |
Ctrl+B |
Mostrar/ocultar barra lateral |
Cmd+J |
Ctrl+J |
Mostrar/ocultar terminal |
Ctrl+- |
Ctrl+- |
Navegar hacia atrás en el cursor |
Ctrl+Shift+- |
Ctrl+Shift+- |
Navegar hacia adelante |
Edición avanzada
| Atajo | Acción |
|---|---|
Cmd+D repetido |
Seleccionar múltiples ocurrencias de la misma palabra |
Cmd+Shift+L |
Seleccionar TODAS las ocurrencias a la vez |
Option+Shift+Up/Down |
Duplicar línea arriba/abajo |
Option+Click |
Insertar cursor en múltiples posiciones |
Cmd+Shift+K |
Eliminar línea completa |
Ctrl+Shift+K (Win) |
Eliminar línea completa |
Alt+Up/Down |
Mover línea |
Shift+Option+F |
Formatear documento |
Refactorización
# Renombrar símbolo (seguro, entiende el scope)
F2
# Encontrar todas las referencias
Shift+F12
# Ver definición
Cmd+Click o F12
# Ir a implementación
Cmd+F12Multi-cursor — el superpoder
// Ejemplo: quieres renombrar una propiedad en múltiples objetos
const users = [
{ name_alias: "Ana", age: 30 },
{ name_alias: "Bob", age: 25 },
{ name_alias: "Eva", age: 35 },
]
// 1. Selecciona "name_alias" (doble click)
// 2. Cmd+D repetido para seleccionar las 3 ocurrencias
// 3. Escribe "nombre" y los 3 cambian simultáneamentePatrones de multi-cursor:
Option+Click: inserta cursor en cada línea que tocas.Cmd+Shift+L: selecciona todas las ocurrencias de la palabra bajo el cursor.Ctrl+Shift+Alt+Up/Down: bloque de cursor vertical.
Configuración — qué flags importan realmente
{
"editor.fontSize": 14,
"editor.fontFamily": "JetBrains Mono, 'Fira Code', 'Cascadia Code', monospace",
"editor.fontLigatures": true,
"editor.tabSize": 2,
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll": "explicit",
"source.organizeImports": "explicit"
},
"editor.renderWhitespace": "boundary",
"editor.minimap.enabled": false,
"editor.stickyScroll.enabled": true,
"editor.bracketPairColorization.enabled": true,
"editor.inlineSuggest.enabled": true,
"workbench.colorTheme": "One Dark Pro",
"terminal.integrated.fontSize": 13,
"files.exclude": {
"**/.next": true,
"**/.svelte-kit": true,
"**/node_modules": true,
"**/dist": true
},
"search.exclude": {
"**/node_modules": true,
"**/out": true,
"**/dist": true
}
}stickyScroll: muestra la función/clase actual en el scroll — no pierdes contexto al navegar archivos largos.fontLigatures:!=se muestra como≠,=>como⇒. Más legible, menos cansancio visual.files.exclude+search.exclude: mantiene node_modules y build outputs fuera de la búsqueda y el explorador.
Snippets — tus propias plantillas
{
"Svelte 5 Component": {
"scope": "svelte",
"prefix": "sfc",
"body": [
"<script lang=\"ts\">",
" let { ${1} }: { ${1}: ${2} } = \\$props()",
"</script>",
"",
"<${3:div}>${4}</${3:div}>",
"",
"<style>",
" ${5}",
"</style>"
],
"description": "Svelte 5 component"
}
}Guarda esto en ~/.config/Code/User/snippets/svelte.json o usa el comando "Configure Snippets" desde la paleta de comandos.
Extensiones — las que realmente importan
Imprescindibles
- ESLint / Biome: linting + formatting en el editor.
- GitLens: blame, historial inline, exploración visual de ramas.
- GitHub Copilot / Codeium: autocompletado contextual. Copilot es mejor para lenguajes de tipado dinámico, Codeium para TypeScript/Go/Rust.
- Error Lens: muestra errores de diagnóstico inline, no solo en la línea de estado.
Para SvelteKit
- Svelte for VS Code: resaltado de sintaxis, autocompletado, diagnóstico para
.svelte. - Svelte5-Rune: snippets de Svelte 5 runes.
- Tailwind CSS IntelliSense: autocompletado de clases, si usas Tailwind.
Lenguajes específicos
- YAML: esquemas para
docker-compose.yml,kubernetes/*.yaml. - Prettier: formateo consistente. Combínalo con
formatOnSave. - Pretty TypeScript Errors: mensajes de error legibles en vez del desbordamiento de texto de TS.
Tasks — automatización desde el editor
// .vscode/tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "Build & Check",
"dependsOn": ["lint", "typecheck"]
},
{
"label": "lint",
"type": "shell",
"command": "npx eslint src/"
},
{
"label": "typecheck",
"type": "shell",
"command": "npx svelte-check"
}
]
}Cmd+Shift+B (o Ctrl+Shift+B) ejecuta la tarea por defecto. Útil para check rápido sin salir del editor.
Remote Development — desarrollo remoto nativo
# Conectar a un servidor remoto vía SSH
# VS Code Server se instala automáticamente
$ code --remote ssh-remote+server.dev /home/user/project
# Conectar a un contenedor
$ code --folder-uri vscode-remote://dev-container+my-projectLas extensiones Remote-SSH, Dev Containers y Tunnels permiten desarrollar en entornos remotos con la misma experiencia que local. El código corre en el remoto; la UI, en tu máquina.
Profiles — contextos separados
Puedes crear perfiles para diferentes roles:
- Frontend profile: extensiones para Svelte/React/Tailwind, oculta archivos backend.
- Backend profile: extensiones para Go/Rust/Python, base de datos explorer.
- DevOps profile: YAML, Docker, Kubernetes, Terraform.
Comando: Profiles: Create Profile desde la paleta de comandos. Cada perfil tiene su propio conjunto de extensiones, configuraciones y snippets.
CLI de VS Code
# Abrir archivos en el editor actual
$ code src/lib/constants.ts
# Diff de dos archivos
$ code --diff src/old.ts src/new.ts
# Abrir sin extensiones (modo seguro)
$ code --disable-extensions .
# Instalar extensiones desde terminal
$ code --install-extension svelte.svelte-vscodecode en la terminal es más rápido que navegar con el ratón para abrir archivos conocidos.
Un editor bien configurado no es un lujo — es una extensión de tu cerebro. Invierte tiempo en configurarlo y cada hora de código será más productiva.