# Referência Rápida do VS Code

*Navegação, edição, multi-cursor, terminal, depuração, extensões*

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

## Navegação

### Navegação de Arquivos e Símbolos

| Command | Description |
|---------|-------------|
| `Ctrl+P` | Abrir arquivo rapidamente por nome |
| `Ctrl+Shift+P` | Paleta de Comandos |
| `Ctrl+Shift+O` | Ir ao símbolo no arquivo |
| `Ctrl+T` | Ir ao símbolo no workspace |
| `Ctrl+G` | Ir ao número de linha |
| `F12` | Ir à definição |
| `Alt+F12` | Peek da definição |
| `Shift+F12` | Encontrar todas as referências |
| `Ctrl+Shift+\` | Saltar para o delimitador correspondente |

### Navegação de Abas e Editor

| Command | Description |
|---------|-------------|
| `Ctrl+Tab` | Ciclar pelas abas abertas |
| `Ctrl+1 / 2 / 3` | Focar grupo de editor 1 / 2 / 3 |
| `Ctrl+\` | Dividir editor |
| `Ctrl+B` | Alternar barra lateral |
| `Ctrl+J` | Alternar painel inferior |

## Edição

### Operações de Linha

| Command | Description |
|---------|-------------|
| `Ctrl+Shift+K` | Excluir linha inteira |
| `Alt+Up / Down` | Mover linha acima / abaixo |
| `Shift+Alt+Up / Down` | Copiar linha acima / abaixo |
| `Ctrl+Enter` | Inserir linha abaixo |
| `Ctrl+Shift+Enter` | Inserir linha acima |
| `Ctrl+Shift+[` | Recolher região |
| `Ctrl+Shift+]` | Expandir região |

### Manipulação de Texto

| Command | Description |
|---------|-------------|
| `Ctrl+D` | Selecionar palavra (repetir para adicionar próxima ocorrência) |
| `Ctrl+Shift+L` | Selecionar todas as ocorrências da seleção |
| `Ctrl+L` | Selecionar linha inteira |
| `Ctrl+/` | Alternar comentário de linha |
| `Shift+Alt+A` | Alternar comentário de bloco |
| `Tab / Shift+Tab` | Indentar / remover indentação da linha |

## Multi-Cursor

### Adicionando Cursores

| Command | Description |
|---------|-------------|
| `Alt+Click` | Adicionar cursor na posição do clique |
| `Ctrl+Alt+Up / Down` | Adicionar cursor acima / abaixo |
| `Ctrl+D` | Adicionar próxima ocorrência da seleção |
| `Ctrl+Shift+L` | Adicionar cursor em todas as ocorrências |
| `Ctrl+U` | Desfazer última adição de cursor |
| `Esc` | Sair do modo multi-cursor |

### Fluxo de Trabalho Multi-Cursor

```
// Selecionar uma palavra, depois Ctrl+D para adicionar ocorrências
// Digitar o substituto — todos os cursores se atualizam
// Ctrl+Shift+L seleciona TODAS as ocorrências de uma vez
// Alt+Click para posicionamento arbitrário de cursor
```

## Terminal

### Atalhos do Terminal

| Command | Description |
|---------|-------------|
| `Ctrl+`` | Alternar terminal integrado |
| `Ctrl+Shift+`` | Criar novo terminal |
| `Ctrl+Shift+5` | Dividir terminal |
| `Ctrl+PgUp / PgDn` | Rolar terminal acima / abaixo |
| `Ctrl+Shift+C` | Copiar seleção no terminal |
| `Ctrl+Shift+V` | Colar no terminal |

### Gerenciamento do Terminal

| Command | Description |
|---------|-------------|
| `Ctrl+Shift+P → Terminal: Kill` | Encerrar terminal ativo |
| `Ctrl+Shift+P → Terminal: Rename` | Renomear aba do terminal |
| `Terminal dropdown` | Alternar entre terminais |
| `terminal.integrated.shell.*` | Configuração para mudar o shell padrão |

## Depuração

### Controles de Depuração

| Command | Description |
|---------|-------------|
| `F5` | Iniciar / continuar depuração |
| `Shift+F5` | Parar depuração |
| `Ctrl+Shift+F5` | Reiniciar depuração |
| `F9` | Alternar ponto de interrupção |
| `F10` | Passo sobre |
| `F11` | Passo para dentro |
| `Shift+F11` | Passo para fora |

### Exemplo de launch.json

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

### Recursos de Depuração

| Command | Description |
|---------|-------------|
| `Watch panel` | Monitorar expressões durante a depuração |
| `Call Stack` | Ver pilha de chamadas de execução |
| `Debug Console` | Avaliar expressões no ponto de interrupção |
| `Conditional breakpoint` | Clique direito no breakpoint → Editar condição |
| `Logpoint` | Registrar mensagem sem parar a execução |

## Extensões

### Gerenciamento de Extensões

| Command | Description |
|---------|-------------|
| `Ctrl+Shift+X` | Abrir visualização de Extensões |
| `@installed` | Filtrar para mostrar extensões instaladas |
| `@enabled / @disabled` | Filtrar por habilitadas / desabilitadas |
| `@recommended` | Mostrar extensões recomendadas |

### Extensões Essenciais

| Command | Description |
|---------|-------------|
| `Prettier` | Formatador de código (JS, TS, CSS, HTML) |
| `ESLint` | Linting de JavaScript/TypeScript |
| `GitLens` | Integração Git aprimorada e anotações |
| `Remote - SSH` | Desenvolver em máquinas remotas via SSH |
| `Live Server` | Servidor de desenvolvimento local com live reload |
| `Thunder Client` | Cliente REST API dentro do VS Code |

## Configurações

### Acessando as Configurações

| Command | Description |
|---------|-------------|
| `Ctrl+,` | Abrir UI de Configurações |
| `Ctrl+Shift+P → settings.json` | Abrir JSON de configurações |

### Configurações Comuns (JSON)

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

### Workspace vs Usuário

| Command | Description |
|---------|-------------|
| `User settings` | Global, aplica a todos os projetos |
| `Workspace settings` | Por projeto, em .vscode/settings.json |
| `Workspace overrides User` | Configurações do workspace têm prioridade |

## Atalhos de Teclado

### Personalização

| Command | Description |
|---------|-------------|
| `Ctrl+K Ctrl+S` | Abrir editor de Atalhos de Teclado |
| `keybindings.json` | Arquivo JSON para atalhos personalizados |

### Atalhos Essenciais

| Command | Description |
|---------|-------------|
| `Ctrl+Shift+P` | Paleta de Comandos (acesso a tudo) |
| `Ctrl+P` | Abrir arquivo rapidamente |
| `Ctrl+Shift+F` | Buscar em todos os arquivos |
| `Ctrl+H` | Localizar e substituir no arquivo |
| `Ctrl+Shift+H` | Localizar e substituir em todos os arquivos |
| `F2` | Renomear símbolo |
| `Ctrl+.` | Correção rápida (ações de código) |
| `Ctrl+Space` | Acionar IntelliSense |
| `Ctrl+Shift+I` | Formatar documento |

## Integração com Git

### Visualização de Controle de Código-Fonte

| Command | Description |
|---------|-------------|
| `Ctrl+Shift+G` | Abrir painel de Controle de Código-Fonte |
| `+` | Preparar alterações (na visualização SCM) |
| `-` | Remover alterações preparadas |
| `Ctrl+Enter` | Confirmar (commit) alterações preparadas |
| `...` | Mais ações (push, pull, etc.) |

### Recursos Git Integrados

| Command | Description |
|---------|-------------|
| `Gutter indicators` | Marcas verde/azul/vermelho para adicionado/modificado/excluído |
| `Ctrl+Shift+P → Git: Checkout` | Trocar branches |
| `Ctrl+Shift+P → Git: Pull` | Pull do remoto |
| `Ctrl+Shift+P → Git: Push` | Push para o remoto |
| `Click gutter change` | Visualização de diff inline para linhas modificadas |

### Diff e Merge

| Command | Description |
|---------|-------------|
| `SCM → Open Changes` | Visualização de diff lado a lado |
| `Inline diff arrows` | Reverter alterações individuais |
| `3-way merge editor` | Resolver conflitos visualmente (1.69+) |

## Padrões Comuns

### Recursos do Workspace

| Command | Description |
|---------|-------------|
| `Ctrl+Shift+E` | Focar explorador de arquivos |
| `Ctrl+Shift+D` | Focar visualização de depuração |
| `Ctrl+Shift+M` | Mostrar painel de problemas |
| `Ctrl+K Ctrl+T` | Alterar tema de cores |
| `Ctrl+K Z` | Entrar no modo Zen |

### Snippets

```
// Arquivo → Preferências → Configurar Snippets
"Print": {
  "prefix": "log",
  "body": "console.log('$1');",
  "description": "Console log"
}
```

### Tarefas (tasks.json)

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