Practical VS Code keyboard shortcut reference. Win/Linux column uses Ctrl/Alt; Mac column uses ⌘/⌥. The shortcuts that actually make you fast are flagged.
Command Palette (the keyboard ninja's superpower)
| Action | Win/Linux | Mac |
| Command Palette | Ctrl + Shift + P | ⌘ + ⇧ + P |
| Quick Open file | Ctrl + P | ⌘ + P |
| Quick Open recent | Ctrl + R | ⌃ + R |
| Go to Symbol in file | Ctrl + Shift + O | ⌘ + ⇧ + O |
| Go to Symbol in workspace | Ctrl + T | ⌘ + T |
| Go to Line | Ctrl + G | ⌃ + G |
| Show keyboard shortcuts | Ctrl + K, Ctrl + S | ⌘ + K, ⌘ + S |
Pro tip: typing ? in Quick Open shows the keyword-prefix help for every other quick-pick (commands, symbols, lines, etc.).
Editing
| Action | Win/Linux | Mac |
| Cut / Copy line (without selection) | Ctrl + X / C | ⌘ + X / C |
| Move line up / down | Alt + ↑ / ↓ | ⌥ + ↑ / ↓ |
| Copy line up / down | Shift + Alt + ↑ / ↓ | ⇧ + ⌥ + ↑ / ↓ |
| Delete line | Ctrl + Shift + K | ⌘ + ⇧ + K |
| Insert line below / above | Ctrl + Enter / Ctrl + Shift + Enter | ⌘ + ↩ / ⌘ + ⇧ + ↩ |
| Indent / outdent | Tab / Shift + Tab | ⇥ / ⇧ + ⇥ |
| Toggle line comment | Ctrl + / | ⌘ + / |
| Toggle block comment | Shift + Alt + A | ⇧ + ⌥ + A |
| Trigger suggestions | Ctrl + Space | ⌃ + Space |
| Trigger parameter hints | Ctrl + Shift + Space | ⌘ + ⇧ + Space |
| Format document | Shift + Alt + F | ⇧ + ⌥ + F |
| Format selection | Ctrl + K, Ctrl + F | ⌘ + K, ⌘ + F |
| Rename Symbol | F2 | F2 |
| Quick Fix / show code actions | Ctrl + . | ⌘ + . |
Multi-cursor (the killer feature)
| Action | Win/Linux | Mac |
| Insert cursor above / below | Ctrl + Alt + ↑ / ↓ | ⌥ + ⌘ + ↑ / ↓ |
| Insert cursor at click | Alt + click | ⌥ + click |
| Add next occurrence of selection | Ctrl + D | ⌘ + D |
| Skip current occurrence | Ctrl + K, Ctrl + D | ⌘ + K, ⌘ + D |
| Select all occurrences | Ctrl + Shift + L | ⌘ + ⇧ + L |
| Select all occurrences of word | Ctrl + F2 | ⌘ + F2 |
| Column (box) selection | Shift + Alt + drag | ⇧ + ⌥ + drag |
| Expand selection | Shift + Alt + → | ⌃ + ⇧ + ⌘ + → |
| Shrink selection | Shift + Alt + ← | ⌃ + ⇧ + ⌘ + ← |
Navigation
| Action | Win/Linux | Mac |
| Go to Definition | F12 | F12 |
| Peek Definition | Alt + F12 | ⌥ + F12 |
| Open Definition to side | Ctrl + K, F12 | ⌘ + K, F12 |
| Go to References | Shift + F12 | ⇧ + F12 |
| Go to Type Definition | (via Command Palette) | (via Command Palette) |
| Go to Implementation | Ctrl + F12 | ⌘ + F12 |
| Navigate back | Ctrl + Alt + - | ⌃ + - |
| Navigate forward | Ctrl + Shift + - | ⌃ + ⇧ + - |
| Go to matching bracket | Ctrl + Shift + \ | ⌘ + ⇧ + \ |
| Toggle fold | Ctrl + Shift + [ / ] | ⌘ + ⌥ + [ / ] |
| Fold / unfold all | Ctrl + K, Ctrl + 0 / J | ⌘ + K, ⌘ + 0 / J |
Search & replace
| Action | Win/Linux | Mac |
| Find | Ctrl + F | ⌘ + F |
| Find next / previous | F3 / Shift + F3 | ⌘ + G / ⌘ + ⇧ + G |
| Replace | Ctrl + H | ⌘ + ⌥ + F |
| Find in files | Ctrl + Shift + F | ⌘ + ⇧ + F |
| Replace in files | Ctrl + Shift + H | ⌘ + ⇧ + H |
| Toggle case sensitive / regex / whole word | Alt + C / R / W (in find) | ⌘ + ⌥ + C / R / W |
| Add selection to next find match | Ctrl + D (in find) | ⌘ + D |
Files & editor tabs
| Action | Win/Linux | Mac |
| New file | Ctrl + N | ⌘ + N |
| Save | Ctrl + S | ⌘ + S |
| Save all | Ctrl + K, S | ⌘ + ⌥ + S |
| Close editor | Ctrl + W | ⌘ + W |
| Reopen closed editor | Ctrl + Shift + T | ⌘ + ⇧ + T |
| Cycle editor tabs | Ctrl + Tab | ⌃ + Tab |
| Switch to tab N | Ctrl + 1 / 2 / 3 ... | ⌘ + 1 / 2 / 3 ... |
| Split editor (right) | Ctrl + \ | ⌘ + \ |
| Split editor (down) | Ctrl + K, Ctrl + \ | ⌘ + K, ⌘ + \ |
| Focus split editor 1/2/3 | Ctrl + 1 / 2 / 3 | ⌘ + 1 / 2 / 3 |
Sidebar & panels
| Action | Win/Linux | Mac |
| Toggle sidebar | Ctrl + B | ⌘ + B |
| Explorer | Ctrl + Shift + E | ⌘ + ⇧ + E |
| Search | Ctrl + Shift + F | ⌘ + ⇧ + F |
| Source Control | Ctrl + Shift + G | ⌃ + ⇧ + G |
| Run & Debug | Ctrl + Shift + D | ⌘ + ⇧ + D |
| Extensions | Ctrl + Shift + X | ⌘ + ⇧ + X |
| Toggle Panel (terminal, problems, output) | Ctrl + J | ⌘ + J |
| Toggle Terminal | Ctrl + ` | ⌃ + ` |
| New Terminal | Ctrl + Shift + ` | ⌃ + ⇧ + ` |
| Toggle Problems | Ctrl + Shift + M | ⌘ + ⇧ + M |
| Toggle Output | Ctrl + Shift + U | ⌘ + ⇧ + U |
| Toggle Zen Mode | Ctrl + K, Z | ⌘ + K, Z |
| Toggle Full Screen | F11 | ⌃ + ⌘ + F |
Debugging
| Action | Win/Linux | Mac |
| Start / Continue | F5 | F5 |
| Stop debugging | Shift + F5 | ⇧ + F5 |
| Step over | F10 | F10 |
| Step into | F11 | F11 |
| Step out | Shift + F11 | ⇧ + F11 |
| Toggle breakpoint | F9 | F9 |
| Restart debug | Ctrl + Shift + F5 | ⌘ + ⇧ + F5 |
Workbench, settings
| Action | Win/Linux | Mac |
| Settings UI | Ctrl + , | ⌘ + , |
| Keyboard shortcuts UI | Ctrl + K, Ctrl + S | ⌘ + K, ⌘ + S |
| Open user settings JSON | (Command Palette → Preferences: Open Settings (JSON)) | (same) |
| Reload window | Ctrl + R (after install) or Cmd Palette "Reload Window" | same |
| Toggle word wrap | Alt + Z | ⌥ + Z |
| Toggle minimap | (Command Palette → "View: Toggle Minimap") | (same) |
Related tools
Test regex patterns before pasting into VS Code's Find/Replace: regex tester. Pretty-print JSON pasted from API responses: JSON formatter. Compare two versions of a file outside VS Code: diff checker.