Keyboard shortcuts, core features and essential extensions, and a productive new-project setup checklist.
| Category | Action | macOS | Windows |
|---|---|---|---|
| Navigate | Command Palette | ⇧⌘P | Ctrl+Shift+P |
| Navigate | Quick Open (go to file) | ⌘P | Ctrl+P |
| Navigate | Go to Symbol in File | ⇧⌘O | Ctrl+Shift+O |
| Navigate | Go to Definition | F12 | F12 |
| Navigate | Go Back / Forward | ⌃- / ⌃⇧- | Alt+Left / Alt+Right |
| Editing | Add cursor above/below | ⌥⌘↑ / ⌥⌘↓ | Ctrl+Alt+Up / Down |
| Editing | Select next match (multi-cursor) | ⌘D | Ctrl+D |
| Editing | Move line up/down | ⌥↑ / ⌥↓ | Alt+Up / Down |
| Editing | Duplicate line | ⇧⌥↓ | Shift+Alt+Down |
| Editing | Toggle line comment | ⌘/ | Ctrl+/ |
| Editing | Format Document | ⇧⌥F | Shift+Alt+F |
| Editing | Quick Fix / Refactor | ⌘. | Ctrl+. |
| Panels | Toggle integrated terminal | ⌃` | Ctrl+` |
| Panels | Toggle sidebar (Explorer) | ⌘B | Ctrl+B |
| Panels | Split editor | ⌘\ | Ctrl+\ |
| Search | Find in Files | ⇧⌘F | Ctrl+Shift+F |
| Git | Open Source Control panel | ⌃⇧G | Ctrl+Shift+G |
| File | New window | ⇧⌘N | Ctrl+Shift+N |
Core Features
IntelliSense
Context-aware autocomplete, parameter hints, and quick documentation — powered by a language server per language, not a generic dictionary.
Integrated Terminal
A real shell inside the editor, aware of the open workspace's directory — no separate terminal window needed for most workflows.
Source Control (Git)
Stage, commit, push/pull, and view diffs without leaving the editor — the built-in Git integration covers most day-to-day operations.
Debugger
Set breakpoints and step through code for many languages via a launch.json config — no separate IDE needed for debugging.
Workspaces
A .code-workspace file can group multiple folders and per-workspace settings — useful for a monorepo or a frontend+backend pair.
Remote Development
Extensions for SSH, Containers, and WSL let VS Code's UI run locally while code/execution happens on a remote machine or container.
Essential Extensions
Prettier / ESLint
Remote - SSH
Dev Containers
GitLens
Open the folder, not individual files
Opening the project root (not a loose file) enables workspace-aware features — search-in-files scope, the Explorer tree, and per-project settings.
Accept recommended workspace extensions
A repo's .vscode/extensions.json prompts for project-specific extensions — accepting keeps formatting/linting consistent with the rest of the team.
Set format-on-save
"editor.formatOnSave": true in workspace settings — removes formatting disagreements from every code review.
Add a launch.json once debugging is needed
Run and Debug → "create a launch.json file" auto-detects the project type and scaffolds a reasonable starting config.
Quick Tips
# to search symbols workspace-wide, or : after a filename to jump to a line number.