# Referencia Rápida de VS Code

*Navegación, edición, multi-cursor, terminal, depuración, extensiones*

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

## Navegación

### Navegación de Archivos y Símbolos

| Command | Description |
|---------|-------------|
| `Ctrl+P` | Abrir archivo rápidamente por nombre |
| `Ctrl+Shift+P` | Paleta de comandos |
| `Ctrl+Shift+O` | Ir al símbolo en el archivo |
| `Ctrl+T` | Ir al símbolo en el espacio de trabajo |
| `Ctrl+G` | Ir al número de línea |
| `F12` | Ir a la definición |
| `Alt+F12` | Vista previa de definición |
| `Shift+F12` | Buscar todas las referencias |
| `Ctrl+Shift+\` | Saltar al corchete coincidente |

### Navegación de Pestañas y Editor

| Command | Description |
|---------|-------------|
| `Ctrl+Tab` | Ciclar por las pestañas abiertas |
| `Ctrl+1 / 2 / 3` | Enfocar grupo de editor 1 / 2 / 3 |
| `Ctrl+\` | Dividir editor |
| `Ctrl+B` | Alternar barra lateral |
| `Ctrl+J` | Alternar panel inferior |

## Edición

### Operaciones de Línea

| Command | Description |
|---------|-------------|
| `Ctrl+Shift+K` | Eliminar línea entera |
| `Alt+Up / Down` | Mover línea arriba / abajo |
| `Shift+Alt+Up / Down` | Copiar línea arriba / abajo |
| `Ctrl+Enter` | Insertar línea abajo |
| `Ctrl+Shift+Enter` | Insertar línea arriba |
| `Ctrl+Shift+[` | Plegar región |
| `Ctrl+Shift+]` | Desplegar región |

### Manipulación de Texto

| Command | Description |
|---------|-------------|
| `Ctrl+D` | Seleccionar palabra (repetir para añadir siguiente coincidencia) |
| `Ctrl+Shift+L` | Seleccionar todas las ocurrencias de la selección |
| `Ctrl+L` | Seleccionar línea entera |
| `Ctrl+/` | Alternar comentario de línea |
| `Shift+Alt+A` | Alternar comentario de bloque |
| `Tab / Shift+Tab` | Indentar / quitar indentación de línea |

## Multi-Cursor

### Añadir Cursores

| Command | Description |
|---------|-------------|
| `Alt+Click` | Añadir cursor en posición de clic |
| `Ctrl+Alt+Up / Down` | Añadir cursor arriba / abajo |
| `Ctrl+D` | Añadir siguiente ocurrencia de la selección |
| `Ctrl+Shift+L` | Añadir cursor en todas las ocurrencias |
| `Ctrl+U` | Deshacer última adición de cursor |
| `Esc` | Salir del modo multi-cursor |

### Flujo de Trabajo Multi-Cursor

```
// Seleccionar una palabra, luego Ctrl+D para añadir coincidencias
// Escribir el reemplazo — todos los cursores se actualizan
// Ctrl+Shift+L selecciona TODAS las coincidencias a la vez
// Alt+Click para colocación arbitraria de cursor
```

## Terminal

### Atajos de Terminal

| Command | Description |
|---------|-------------|
| `Ctrl+`` | Alternar terminal integrado |
| `Ctrl+Shift+`` | Crear nuevo terminal |
| `Ctrl+Shift+5` | Dividir terminal |
| `Ctrl+PgUp / PgDn` | Desplazar terminal arriba / abajo |
| `Ctrl+Shift+C` | Copiar selección en terminal |
| `Ctrl+Shift+V` | Pegar en terminal |

### Gestión de Terminal

| Command | Description |
|---------|-------------|
| `Ctrl+Shift+P → Terminal: Kill` | Terminar terminal activo |
| `Ctrl+Shift+P → Terminal: Rename` | Renombrar pestaña de terminal |
| `Terminal dropdown` | Cambiar entre terminales |
| `terminal.integrated.shell.*` | Configuración para cambiar el shell predeterminado |

## Depuración

### Controles de Depuración

| Command | Description |
|---------|-------------|
| `F5` | Iniciar / continuar depuración |
| `Shift+F5` | Detener depuración |
| `Ctrl+Shift+F5` | Reiniciar depuración |
| `F9` | Alternar punto de interrupción |
| `F10` | Paso sobre |
| `F11` | Paso hacia adentro |
| `Shift+F11` | Paso hacia afuera |

### Ejemplo de launch.json

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

### Características de Depuración

| Command | Description |
|---------|-------------|
| `Watch panel` | Monitorear expresiones durante la depuración |
| `Call Stack` | Ver pila de llamadas de ejecución |
| `Debug Console` | Evaluar expresiones en punto de interrupción |
| `Conditional breakpoint` | Clic derecho en punto de interrupción → Editar condición |
| `Logpoint` | Registrar mensaje sin detener la ejecución |

## Extensiones

### Gestión de Extensiones

| Command | Description |
|---------|-------------|
| `Ctrl+Shift+X` | Abrir vista de Extensiones |
| `@installed` | Filtrar para mostrar extensiones instaladas |
| `@enabled / @disabled` | Filtrar por habilitadas / deshabilitadas |
| `@recommended` | Mostrar extensiones recomendadas |

### Extensiones Esenciales

| Command | Description |
|---------|-------------|
| `Prettier` | Formateador de código (JS, TS, CSS, HTML) |
| `ESLint` | Linting de JavaScript/TypeScript |
| `GitLens` | Integración mejorada de Git y anotaciones |
| `Remote - SSH` | Desarrollar en máquinas remotas vía SSH |
| `Live Server` | Servidor de desarrollo local con recarga en vivo |
| `Thunder Client` | Cliente REST API dentro de VS Code |

## Configuración

### Acceder a la Configuración

| Command | Description |
|---------|-------------|
| `Ctrl+,` | Abrir UI de Configuración |
| `Ctrl+Shift+P → settings.json` | Abrir JSON de configuración |

### Configuración Común (JSON)

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

### Espacio de Trabajo vs Usuario

| Command | Description |
|---------|-------------|
| `User settings` | Global, aplica a todos los proyectos |
| `Workspace settings` | Por proyecto, en .vscode/settings.json |
| `Workspace overrides User` | La configuración del espacio de trabajo tiene prioridad |

## Atajos de Teclado

### Personalización

| Command | Description |
|---------|-------------|
| `Ctrl+K Ctrl+S` | Abrir editor de Atajos de Teclado |
| `keybindings.json` | Archivo JSON para atajos personalizados |

### Atajos Esenciales

| Command | Description |
|---------|-------------|
| `Ctrl+Shift+P` | Paleta de comandos (acceso a todo) |
| `Ctrl+P` | Abrir archivo rápido |
| `Ctrl+Shift+F` | Buscar en todos los archivos |
| `Ctrl+H` | Buscar y reemplazar en archivo |
| `Ctrl+Shift+H` | Buscar y reemplazar en todos los archivos |
| `F2` | Renombrar símbolo |
| `Ctrl+.` | Corrección rápida (acciones de código) |
| `Ctrl+Space` | Activar IntelliSense |
| `Ctrl+Shift+I` | Formatear documento |

## Integración con Git

### Vista de Control de Código Fuente

| Command | Description |
|---------|-------------|
| `Ctrl+Shift+G` | Abrir panel de Control de Código Fuente |
| `+` | Preparar cambios (en vista SCM) |
| `-` | Quitar cambios preparados |
| `Ctrl+Enter` | Confirmar (commit) cambios preparados |
| `...` | Más acciones (push, pull, etc.) |

### Características Git en Línea

| Command | Description |
|---------|-------------|
| `Gutter indicators` | Marcas verde/azul/rojo para añadido/modificado/eliminado |
| `Ctrl+Shift+P → Git: Checkout` | Cambiar ramas |
| `Ctrl+Shift+P → Git: Pull` | Pull desde remoto |
| `Ctrl+Shift+P → Git: Push` | Push al remoto |
| `Click gutter change` | Vista de diff en línea para líneas modificadas |

### Diff y Merge

| Command | Description |
|---------|-------------|
| `SCM → Open Changes` | Vista de diff lado a lado |
| `Inline diff arrows` | Revertir cambios individuales |
| `3-way merge editor` | Resolver conflictos visualmente (1.69+) |

## Patrones Comunes

### Características del Espacio de Trabajo

| Command | Description |
|---------|-------------|
| `Ctrl+Shift+E` | Enfocar explorador de archivos |
| `Ctrl+Shift+D` | Enfocar vista de depuración |
| `Ctrl+Shift+M` | Mostrar panel de problemas |
| `Ctrl+K Ctrl+T` | Cambiar tema de color |
| `Ctrl+K Z` | Entrar en modo Zen |

### Fragmentos de Código

```
// Archivo → Preferencias → Configurar Fragmentos
"Print": {
  "prefix": "log",
  "body": "console.log('$1');",
  "description": "Console log"
}
```

### Tareas (tasks.json)

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