VS Code ships with a default set of keyboard shortcuts, but those defaults are not identical across operating systems. The same command can use Ctrl on Windows, Cmd on macOS, and a different chord entirely on Linux, which is why a shortcut copied from a Windows tutorial can feel broken on a Linux machine even when nothing in your installation has changed. A focused, source-checked reference such as the VS Code Keyboard Shortcuts lookup lists the documented default for each of 20 common commands on all three platforms side by side, so you can audit what each binding should be before you start changing anything. The reference is intentionally bounded — it covers navigation, editing, search, code, terminal, and file commands — and it does not read your editor settings, install anything, or monitor keystrokes. What it gives you is a single auditable row per command, with explicit Windows, Linux, and macOS mappings drawn from Microsoft's current platform PDFs, so a shortcut that diverges from your expectation can be traced to a real platform difference rather than to a customization you forgot you made.

how to reset vs code keyboard shortcuts
VS Code Keyboard Shortcuts: Defaults Compared by Platform

Why VS Code defaults differ by platform

VS Code inherits some conventions from each host operating system. On Windows and most Linux desktops, the modifier for primary actions is Ctrl; on macOS it is Cmd, with Option standing in for Alt. The editor also aligns some chords with platform conventions that are not directly portable, which is why the same command can carry three different defaults depending on where you run it. Two common editing commands make the gap obvious. On Windows, Format Document is bound to Shift+Alt+F and Toggle Block Comment to Shift+Alt+A. On Linux the official reference uses Ctrl+Shift+I for Format Document and Ctrl+Shift+A for Toggle Block Comment. On macOS the same two commands use Shift+Option+F and Shift+Option+A. These are not typos and not customization — they are the documented defaults, and they are exactly the kind of difference the platform selector in the VS Code Keyboard Shortcuts reference is built to make visible at a glance.

Because the table is bounded at 20 rows, the reference cannot tell you about every command, but it is dense enough to cover the categories where platform differences show up most often: Command Palette access, Quick Open, settings, keyboard settings, line editing, comments, search, formatting, symbol actions, the integrated terminal, and basic file operations. Each row stores one command name, one category, and three platform columns, and the same command name on the page is the same string you would search for in VS Code's built-in Keyboard Shortcuts editor. The platform columns are filled in independently rather than copied from one OS to another, so a Windows row never silently stands in for a Linux or macOS row.

How to read a row in the reference

Each row in the reference answers three questions at once: what the command is called, what category it belongs to, and what the documented default is on Windows, Linux, and macOS. The command name is the string you paste into VS Code's own Keyboard Shortcuts editor (for example, "Format Document" or "Toggle Integrated Terminal"). The category groups the command so you can scan related rows together. The three platform columns are written as plain text — Ctrl, Shift, Alt, Cmd, Option, Control — so you can search for a key string such as "Ctrl+P" and find every command that claims it on any platform, regardless of the glyphs VS Code normally renders.

The reference assumes a standard US keyboard layout. A chord like Ctrl+] produces a different character on an AZERTY or Dvorak layout, and the reference does not translate layouts for you. If you use a non-US layout, treat the key combination as a label and verify the physical key visually rather than by string match. Function keys such as F1, F2, and F12 can also be intercepted by laptop hardware toggles or BIOS settings, which means pressing the key never produces a keystroke VS Code can read at all — the reference is correct, but the key never arrives in the editor. Search runs only against the fixed in-browser table, so the only way to confirm what is actually active on your machine is to read the live row in the built-in editor.

Comparing defaults to what VS Code actually shows

Once you have a documented default from the reference, the next step is to compare it against what VS Code is actually using on your machine. Open the Keyboard Shortcuts editor with Ctrl+K Ctrl+S on Windows or Linux, or Cmd+K Cmd+S on macOS. Type the command name from the reference into the search box — for example, "Format Document" — and read the row that appears. The Keybinding column shows the active binding, the Source column shows where the binding came from (System, Extension, or User), and the When column shows the context clause that limits when the binding fires. If the row you see in the editor matches the platform column for your OS in the reference, the documented default is in effect on your installation.

CommandCategoryWindowsLinuxmacOS
Show All Commands (Command Palette)NavigationCtrl+Shift+PCtrl+Shift+PCmd+Shift+P
Quick Open FileNavigationCtrl+PCtrl+PCmd+P
Delete LineLine editingCtrl+Shift+KCtrl+Shift+KCmd+Shift+K
Insert Line BelowLine editingCtrl+EnterCtrl+EnterCmd+Enter
Toggle Line CommentCommentsCtrl+/Ctrl+/Cmd+/
Toggle Block CommentCommentsShift+Alt+ACtrl+Shift+AShift+Option+A
Format DocumentFormattingShift+Alt+FCtrl+Shift+IShift+Option+F
Toggle Integrated TerminalTerminalCtrl+`Ctrl+`Ctrl+`

This table mirrors the eight rows in the VS Code Keyboard Shortcuts reference that the implementation treats as golden mappings, which means every value is source-checked against Microsoft's current Windows, Linux, and macOS shortcut PDFs. If the row you see in VS Code matches the platform column for your OS, the default is in effect. If the row is empty, the command has no default on your platform and you will need to add a binding yourself. If the row shows a binding you did not expect, the most common cause is an extension that has registered its own chord for the same command — right-click the row and choose Show Same Keybindings to see every command that claims that chord.

What can change a default after the editor loads

A documented default is not a guarantee. Several layers can intervene between the reference and the key you actually press. User keybindings.json is the top layer and overrides everything below it for matching rules. A workspace .vscode/keybindings.json can override defaults only inside the opened folder. Extension-contributed bindings sit below user rules but above the built-in defaults, so a keymap extension such as Vim, Emacs, or JetBrains Keybindings can rebind common commands with broad when clauses that silently win over the editor's built-in default. Other productivity extensions can add when clauses that suppress a default outside a specific file type or focus state, which is why a shortcut that works in one file does not fire in another.

Outside the editor, your operating system can reserve combinations that VS Code never sees. Linux window managers are particularly known to capture Ctrl+Alt chords before VS Code reads them, and macOS system shortcuts can override editor shortcuts in full-screen apps. Remote development over SSH or WSL loads bindings from a different machine, and a default that works locally may be missing or remapped on the remote host. Accessibility tools can also install global hotkeys that consume keystrokes before VS Code does. The reference cannot detect any of these overrides because it is a fixed, in-browser table that does not read your VS Code configuration or monitor global keyboard input — the only way to confirm what is actually active on your machine is to read the row in the built-in editor and, if needed, run the troubleshooting command described below.

Reading the chord and context rules correctly

A chord such as Ctrl+K Ctrl+S is two sequential presses, not one simultaneous four-key press. You press Ctrl+K, release it, then press Ctrl+S while the first key is still in the editor's chord buffer. If you hold all four keys at once, VS Code sees a different key combination and the command does not fire. The chord syntax is the same on every platform; only the modifiers change, so a Linux user pressing Ctrl+K Ctrl+S reaches the same editor as a Windows user pressing Ctrl+K Ctrl+S, and a macOS user pressing Cmd+K Cmd+S reaches the same editor as either of them.

Each rule can also include a when clause that limits the contexts in which it fires — for example, only when a text editor is focused, only inside a notebook, or only when a specific file type is open. A default that "works in one file but not another" usually means the rule's when clause excluded the file you are testing in. The official VS Code keybindings documentation describes the full set of context keys and how scopes combine, and it is the authoritative reference when a binding behaves differently on your machine than the default table suggests. The reference page itself does not parse when clauses; it only lists the documented default, so any context-aware investigation belongs in the built-in editor rather than in the comparison table.

Diagnosing a shortcut that does not match the reference

When the live binding in the Keyboard Shortcuts editor does not match the documented default, run Developer: Toggle Keyboard Shortcuts Troubleshooting from the Command Palette. A small panel opens at the bottom of the window that displays the raw key VS Code receives as you type, along with the command it dispatches. Press the chord you are investigating and read which command appears. If a different command is dispatched, you have found an extension override or a competing user rule. If no command appears at all, the keypress was captured before VS Code saw it — usually by the operating system, a window manager, an accessibility tool, or laptop firmware. If the command matches but the binding still does not feel right, double-check the when clause on the rule: the binding may be scoped to a context that does not include the view you are in.

For commands that are not in the 20-row reference, do not assume they have no default. Open the Keyboard Shortcuts editor, type a partial command name, and read the binding VS Code already shows. For the full platform catalog, consult the VS Code keybindings documentation and the Windows, Linux, and macOS shortcut PDFs that the reference draws from, which list every built-in command and its current default. The reference is a fast filter for the 20 most commonly compared commands, not a replacement for the full editor or the platform PDFs.

What the 20-row reference intentionally leaves out

The reference is bounded on purpose. It covers 20 common default commands and the eight golden mappings that the implementation tests most strictly, but it does not claim to list every built-in or extension-contributed command. It omits debugging step sequences beyond common symbol actions, task and launch bindings, notebook-specific commands, accessibility-focused alternatives, Vim and Emacs keymaps, and localized layout variants. If the command you need is not in the table, that does not mean the command has no default — it means you should consult the built-in editor or Microsoft's full platform PDF instead.

The bounded size is also part of the truth boundary. Because the table is fixed and auditable, every row can be source-checked against Microsoft's current Windows, Linux, and macOS shortcut PDFs, and the platform columns are filled in independently rather than assumed to match. A larger table that copied Windows mappings into the Linux column would be wrong in exactly the way the reference is built to avoid. For readers who want to change a default rather than audit one, the VS Code Keyboard Shortcuts: Find and Change the Default guide walks through locating a command in the editor and rewriting its binding instead of comparing it against the platform column.

For a deeper look, see Format XML in IntelliJ IDEA: Shortcuts and Browser Option.

For a deeper look, see Choose the Right Approach to Generate ANSI Color Codes.