📖 Guide
VS Code Shortcuts Cheat Sheet
Complete VS Code keyboard shortcuts cheat sheet — editing, navigation, search, multi-cursor, terminal, debug, and more.
186 commands across 14 categories
GeneralEditingNavigationSearch & ReplaceMulti-Cursor & SelectionRich LanguagesTerminalDebugExtensionsGit IntegrationFile ManagementEditor & Window ManagementWindow & DisplayChat & AI
General
| Command | Description |
|---|---|
Cmd/Ctrl + Shift + P | Open Command Palette |
Cmd/Ctrl + P | Quick Open — go to file by name |
Cmd/Ctrl + Shift + N | New window/instance |
Cmd/Ctrl + W | Close current editor tab |
Cmd/Ctrl + Shift + W | Close window |
Cmd/Ctrl + , | Open Settings |
Cmd/Ctrl + K Cmd/Ctrl + S | Open Keyboard Shortcuts |
Ctrl + ` | Toggle integrated terminal — macOS uses Control here too, not Cmd, since Cmd+` is reserved by macOS for switching between windows of the same app |
Cmd/Ctrl + B | Toggle sidebar visibility |
Cmd/Ctrl + J | Toggle bottom panel (terminal, output, problems) |
Cmd/Ctrl + Shift + E | Focus Explorer sidebar |
Cmd/Ctrl + Shift + X | Focus Extensions sidebar |
Cmd/Ctrl + K Z | Enter Zen Mode (distraction-free) |
Cmd/Ctrl + Shift + V | Open Markdown preview |
Editing
| Command | Description |
|---|---|
Cmd/Ctrl + X | Cut line (empty selection cuts entire line) |
Cmd/Ctrl + C | Copy line (empty selection copies entire line) |
Cmd/Ctrl + Shift + K | Delete entire line |
Alt + Up/Down | Move line up/down |
Shift + Alt + Up/Down | Copy line up/down |
Cmd/Ctrl + Enter | Insert line below |
Cmd/Ctrl + Shift + Enter | Insert line above |
Cmd/Ctrl + Shift + \ | Jump to matching bracket |
Cmd/Ctrl + ] | Indent line |
Cmd/Ctrl + [ | Outdent line |
Cmd/Ctrl + / | Toggle line comment |
Shift + Alt + A | Toggle block comment |
Alt + Z | Toggle word wrap |
Cmd/Ctrl + Shift + [ | Fold (collapse) region |
Cmd/Ctrl + Shift + ] | Unfold (expand) region |
Cmd/Ctrl + K Cmd/Ctrl + 0 | Fold all regions |
Cmd/Ctrl + K Cmd/Ctrl + J | Unfold all regions |
Cmd/Ctrl + Z | Undo |
Cmd + Shift + Z | Redo (macOS) |
Ctrl + Y | Redo (Windows/Linux) — the primary binding |
Ctrl + Shift + Z | Redo (Windows/Linux) — also bound by default, alongside Ctrl+Y |
Cmd/Ctrl + D | Add selection to next find match |
Home / End | Go to beginning / end of current line |
Ctrl + Shift + M | Toggle whether Tab key moves focus between UI elements instead of inserting a tab character — an accessibility escape hatch (macOS) |
Ctrl + M | Toggle whether Tab key moves focus between UI elements instead of inserting a tab character (Windows/Linux) |
Search & Replace
| Command | Description |
|---|---|
Cmd/Ctrl + F | Find in current file |
Cmd/Ctrl + H | Find and replace in current file |
Cmd/Ctrl + Shift + F | Search across all files in workspace |
Cmd/Ctrl + Shift + H | Replace across all files in workspace |
F3 / Shift + F3 | Find next / previous match |
Alt + Enter | Select all occurrences of find match |
Cmd/Ctrl + D | Add next occurrence to selection |
Cmd/Ctrl + K Cmd/Ctrl + D | Skip current and add next occurrence |
Option + Cmd + C | Toggle case-sensitive search (macOS) |
Alt + C | Toggle case-sensitive search (Windows/Linux) |
Option + Cmd + R | Toggle regex search (macOS) |
Alt + R | Toggle regex search (Windows/Linux) |
Option + Cmd + W | Toggle whole word search (macOS) |
Alt + W | Toggle whole word search (Windows/Linux) |
F4 / Shift + F4 | Jump to next/previous result in the Search sidebar |
Cmd/Ctrl + Shift + J | Toggle Search details — reveals the files-to-include/exclude filter fields |
Multi-Cursor & Selection
| Command | Description |
|---|---|
Alt + Click | Insert cursor at click position |
Cmd/Ctrl + Alt + Up/Down | Insert cursor above/below |
Cmd/Ctrl + D | Select next occurrence of current word |
Cmd/Ctrl + Shift + L | Select all occurrences of current selection |
Cmd/Ctrl + L | Select current line |
Shift + Alt + Drag | Column (box) selection |
Cmd/Ctrl + Shift + K | Delete line |
Cmd/Ctrl + U | Undo last cursor operation |
Ctrl + Shift + Cmd + Right | Expand selection outward to the next syntax node — Smart Select (macOS) |
Shift + Alt + Right | Expand selection outward to the next syntax node — Smart Select (Windows/Linux) |
Ctrl + Shift + Cmd + Left | Shrink selection back to the previous syntax node — Smart Select (macOS) |
Shift + Alt + Left | Shrink selection back to the previous syntax node — Smart Select (Windows/Linux) |
Cmd/Ctrl + K Cmd/Ctrl + D | Move last selection to next find match |
Rich Languages
| Command | Description |
|---|---|
Ctrl + Space | Trigger IntelliSense / autocomplete suggestions |
Cmd/Ctrl + Shift + Space | Trigger parameter hints |
Cmd/Ctrl + . | Quick Fix / Code Actions (lightbulb menu) |
F2 | Rename symbol across all files |
Shift + Alt + F | Format entire document |
Cmd/Ctrl + K Cmd/Ctrl + F | Format selected code |
F12 | Go to Definition |
Cmd/Ctrl + K Cmd/Ctrl + I | Show hover information |
Shift + F12 | Show all References |
Ctrl + Shift + R | Open the Refactor menu — extract function, variable, etc. Uses Control on macOS too, not Cmd |
Shift + Alt + O | Organize imports — remove unused, sort remaining |
Cmd/Ctrl + Shift + . | Replace the value under the cursor with its next value — increments a number, cycles a boolean/enum. Same combo as "Focus the breadcrumb bar" in Navigation; both are real, context-dependent defaults |
Cmd/Ctrl + Shift + , | Replace the value under the cursor with its previous value |
Cmd/Ctrl + K Cmd/Ctrl + X | Trim trailing whitespace |
Cmd/Ctrl + K M | Change the language mode for the current file |
Terminal
| Command | Description |
|---|---|
Ctrl + ` | Toggle terminal panel — macOS uses Control here too, not Cmd, since Cmd+` is reserved by macOS for switching between windows of the same app |
Ctrl + Shift + ` | Create new terminal instance — Control on macOS too, same reason as above |
Cmd/Ctrl + Shift + 5 | Split terminal |
Cmd/Ctrl + \ | Split editor |
Ctrl + Shift + Up/Down | Scroll terminal up/down |
Cmd/Ctrl + Up/Down | Scroll to top/bottom of terminal |
Cmd/Ctrl + K (in terminal) | Clear terminal |
Ctrl + Page Up/Down | Switch between terminal instances |
Cmd/Ctrl + Shift + C | Open a new external terminal window (the OS's native console) at the current folder |
Debug
| Command | Description |
|---|---|
F5 | Start / continue debugging |
Shift + F5 | Stop debugging |
Cmd/Ctrl + Shift + F5 | Restart debugging |
Ctrl + F5 | Start without debugging |
F6 | Pause debugging |
F9 | Toggle breakpoint on current line |
F10 | Step over (execute line, don't enter functions) |
F11 | Step into (enter function) |
Shift + F11 | Step out (exit current function) |
Cmd/Ctrl + Shift + D | Open Debug sidebar |
Cmd/Ctrl + K Cmd/Ctrl + I | Show debug hover (inspect variable) |
Cmd/Ctrl + Shift + Y | Open Debug Console |
Extensions
| Command | Description |
|---|---|
Cmd/Ctrl + Shift + X | Open Extensions view |
@installed | Filter: show installed extensions (type in search) |
@enabled | Filter: show enabled extensions |
@disabled | Filter: show disabled extensions |
@updates | Filter: show installed extensions with updates available — renamed from @outdated in newer VS Code releases |
@recommended | Filter: show recommended extensions |
@builtin | Filter: show extensions that ship built into VS Code |
@category:themes | Filter: show extensions in a category, e.g. themes, linters, debuggers, snippets, formatters |
ext install <publisher>.<name>e.g. code --install-extension esbenp.prettier-vscode | Install extension from CLI |
Git Integration
| Command | Description |
|---|---|
Cmd/Ctrl + Shift + G | Open Source Control (Git) sidebar |
Ctrl + Shift + G G | Focus Source Control view |
Cmd/Ctrl + Enter (in SCM) | Commit staged changes |
Click + on file (in SCM) | Stage file for commit |
Click − on file (in SCM) | Unstage file |
Cmd/Ctrl + Shift + P → Git: Pull | Pull from remote via Command Palette |
Cmd/Ctrl + Shift + P → Git: Push | Push to remote via Command Palette |
Cmd/Ctrl + Shift + P → Git: Checkout to... | Switch branch via Command Palette |
Gutter indicator (left of line numbers) | Green = added, blue = modified, red = deleted lines |
Alt + F5 / Shift + Alt + F5 | Go to next / previous change in diff |
Cmd/Ctrl + Shift + P → Git: Stash | Stash changes |
Cmd/Ctrl + Shift + P → Git: View File History | View file history (with GitLens) |
Cmd/Ctrl + Shift + P → Git: Clone | Clone a repository via Command Palette |
Cmd/Ctrl + Shift + P → Git: Create Branch... | Create and switch to a new branch via Command Palette |
File Management
| Command | Description |
|---|---|
Cmd/Ctrl + N | New (untitled) file |
Cmd/Ctrl + O | Open file... |
Cmd/Ctrl + S | Save |
Option + Cmd + S | Save all open files (macOS) |
Ctrl + K S | Save all open files (Windows/Linux) |
Cmd/Ctrl + Shift + S | Save As... |
Cmd/Ctrl + K Cmd/Ctrl + W | Close all open editors |
Cmd/Ctrl + Shift + T | Reopen the most recently closed editor |
Cmd/Ctrl + K P | Copy the file path of the active file |
Cmd/Ctrl + K R | Reveal the active file in Explorer (Windows) / Finder (macOS) |
Cmd/Ctrl + K Enter | Keep a preview-mode (italic tab) editor open permanently instead of it being replaced by the next file you open |
Editor & Window Management
| Command | Description |
|---|---|
Cmd/Ctrl + K F | Close the current folder/workspace |
Shift + Cmd + W | Close window (macOS) |
Alt + F4 | Close window (Windows/Linux) |
Cmd/Ctrl + 1/2/3 | Focus into the 1st, 2nd, or 3rd editor group |
Cmd/Ctrl + K Cmd/Ctrl + Left/Right | Focus into the editor group to the left/right |
Cmd/Ctrl + K Shift + Cmd + Left/Right | Move the active editor left/right within its group (macOS) |
Ctrl + Shift + PageUp/PageDown | Move the active editor left/right within its group (Windows/Linux) |
Cmd/Ctrl + K Left/Right | Move the active editor group left/right |
Cmd/Ctrl + Alt + Right/Left | Move the active editor into the next/previous editor group |
Window & Display
| Command | Description |
|---|---|
Ctrl + Cmd + F | Toggle full screen (macOS) |
F11 | Toggle full screen (Windows/Linux) |
Cmd/Ctrl + = | Zoom in |
Cmd/Ctrl + - | Zoom out |
Cmd/Ctrl + Numpad0 | Reset zoom level to 100% |
Shift + Alt + 0 | Toggle editor layout between horizontal and vertical split |
Ctrl + Q | Quick Open View — jump to any sidebar/panel view by name |
Chat & AI
| Command | Description |
|---|---|
Ctrl + Cmd + I | Open the Chat view (macOS) |
Ctrl + Alt + I | Open the Chat view (Windows/Linux) |
Cmd/Ctrl + Shift + I | Open Chat in agent mode |
Cmd/Ctrl + I | Open inline chat in the editor |
Cmd/Ctrl + I (in terminal) | Open inline chat in the integrated terminal |
Cmd/Ctrl + Shift + Alt + L | Open Quick Chat — a lightweight chat popup that doesn't take over a full view |
Cmd/Ctrl + . | Open the chat mode/agent picker — only active while a chat input is focused; the same combo is Quick Fix in the editor |
Cmd/Ctrl + Alt + . | Open the language model picker |
Cmd/Ctrl + N (in Chat view) | Start a new chat session — same combo as New File, scoped to the Chat view |
Tab | Accept an inline chat code suggestion |
📖 Free, searchable command reference. Bookmark this page for quick access.