Keybindings

Every binding that currently does something, and where it comes from.

Ctrl on Windows and Linux, Cmd on macOS. Anything not listed here does not exist yet — this page is generated by reading the keymaps, not by aspiration.

Application

Ctrl+Shift+P Command palette
Ctrl+P Go to file
Ctrl+B Toggle sidebar
Ctrl+J Toggle terminal
Ctrl+K Ctrl+O Open folder
Ctrl+W Close tab
Ctrl+Tab / Ctrl+Shift+Tab Next / previous tab
Ctrl+R Reload window

Ctrl+K is a chord: it waits for a second key, and the status bar says so while it waits. It expires after two seconds rather than silently swallowing whatever you type next.

The terminal is Ctrl+J, not the Ctrl+ backtick most editors default to. Backtick is a plain key on a US layout and something else nearly everywhere else: a dead key on French and several other European layouts, AltGr on AZERTY. A default that costs one keypress for some people and three for others is not much of a default. Ctrl+J is what VS Code binds its panel to anyway, so it is still muscle memory, and it costs the same on every layout.

Editing

Ctrl+S Save
Ctrl+Z Undo
Ctrl+Y, Ctrl+Shift+Z Redo
Ctrl+U Undo selection change
Tab Indent

Undo history is per file and survives switching tabs. That sounds like it should go without saying; it did not, for a while.

Find

Ctrl+F Open the search panel
Ctrl+G, F3 Find next
Ctrl+Shift+G, Shift+F3 Find previous
Escape Close the search panel
Ctrl+D Select next occurrence
Ctrl+Shift+L Select all occurrences of the selection
Ctrl+Alt+G Go to line

Find is CodeMirror’s, themed to match. There is no project-wide search: half a project search answers questions wrongly rather than not at all, so there is none until there is a real one.

Where these come from

The application bindings live in the keydown handler in App.tsx and are mirrored in the command palette, which is the discoverable copy. The editing and find bindings come from @codemirror/commands and @codemirror/search unchanged — inheriting the muscle memory every other editor already trained is free, and fighting it is a cost with no upside.

There is no user-facing keybinding customisation yet.