Keymaps & keybindings
Editora is keyboard-first, and every action is a command, so the keyboard layer is entirely yours to change.
The five keymaps
Editora ships five complete keymaps, selectable in Settings → Keymaps or with
keymap.select:
- Emacs (default)
- CUA
- Sublime Text
- VS Code
- IntelliJ IDEA
None of them is modal: they’re different chord-to-command
maps over the same command ids, so switching changes accelerators without
stranding any feature. Switching is live, with no restart, and every chord
hint updates with it: toolbar tooltips, the command palette, tool-window
tooltips, and the Welcome shortcuts. Hints are written in the notation of the
active keymap and platform: Ctrl+Shift+P, ⇧⌘P, or Emacs notation in the
Emacs keymap.
Undo and toggle-comment also have chords that can be typed on keyboards where
/ is a shifted key: C-x u, C-_, and Ctrl+Shift+7 undo in the Emacs keymap,
and Ctrl+Shift+7 or the numpad slash toggle a comment in the other keymaps.
On macOS the non-Emacs keymaps mostly use ⌘ where the keybindings reference shows Ctrl. A few chords differ beyond the modifier, where macOS reserves the obvious one: Replace is ⌥⌘F rather than Ctrl+H in the CUA, Sublime Text and VS Code keymaps, for example. The command palette always shows the chord that applies on your machine. Emacs uses Control on every platform.
Emacs notation reads C- as Ctrl, M- as Alt (Option on macOS) and S- as
Shift, and a space separates the steps of a sequence: C-x C-s is Ctrl+X, then
Ctrl+S.
Debugger keys
Every keymap binds the debugger’s commands. The Emacs keymap’s are listed under
Debugging; besides those, C-c C-d followed by
r restarts, v shows the value at the caret, x evaluates, w adds a
watch, l lists the breakpoints, m mutes them, t enables or disables the
caret line’s breakpoint, s smart-steps into, f restarts the frame and h
applies code changes.
The CUA and Sublime Text keymaps use VS Code’s function keys:
| Key | Action |
|---|---|
| F5 | Start or continue |
| Shift+F5 | Stop |
| Ctrl+Shift+F5 | Restart |
| F6 | Pause (CUA only: in Sublime Text, F6 is spell checking) |
| F9 | Toggle breakpoint |
| F10 | Step over |
| F11 | Step into while the program is paused, otherwise Full Screen |
| Shift+F11 | Step out |
Because F11 steps into only while a program is paused, Full Screen also has Ctrl+Alt+F in these two keymaps (Ctrl+⌘F on macOS). The VS Code keymap has the same keys, with F11 always Step Into.
The IntelliJ IDEA keymap adds Ctrl+F5 Restart, Alt+F8 Evaluate, Ctrl+Alt+F8 Show Value at Caret, Ctrl+Shift+F9 Breakpoints, Shift+F7 Smart Step Into and Ctrl+F9 Apply Code Changes to its usual debugger keys.
Some debugger keys are the same in every keymap. While the program is paused,
Ctrl+Space completes an expression in the evaluate field, a watch prompt and a
breakpoint’s condition and log message, and typing . opens the same list.
In the value popup of Show Value at Caret, the arrow keys move and unfold,
Enter unfolds a row or loads the next page, Shift+Enter adds the row to
Watches, Ctrl+C (⌘C on macOS) copies its value and Esc closes the popup. See
Inspecting values.
Java chords
The IntelliJ IDEA keymap uses IntelliJ’s chords for the Java tools:
| Chord | Command |
|---|---|
| Alt+Enter | Quick fixes |
| Shift+F6 | Rename |
| F2 / Shift+F2 | Next / previous problem |
| Ctrl+F1 | Show problem at caret |
| Alt+Insert | Generate (New in the Project tree) |
| Ctrl+O / Ctrl+I | Override / Implement Methods |
| Ctrl+Alt+L / Ctrl+Alt+O | Format / organize imports |
| Ctrl+N, Ctrl+Alt+Shift+N | Go to Symbol in Workspace |
| Ctrl+Alt+B / Ctrl+Shift+B | Go to implementation / type definition |
| Ctrl+H / Ctrl+Alt+H | Type / call hierarchy |
| Ctrl+P | Parameter info |
| Ctrl+Shift+I | Peek definition |
| Ctrl+Shift+T | Related file (test ⇄ class) |
| Ctrl+Alt+V / C / F / M / P / N | Extract variable / constant / field / method, introduce parameter, inline |
| F6 / Ctrl+F6 | Move / change signature |
| Ctrl+Alt+Shift+T | Refactor This |
| Ctrl+Alt+T | Surround With |
| Ctrl+J | Insert snippet |
| Ctrl+Shift+Enter | Complete statement |
| Ctrl+Shift+Space | Smart Type completion |
| Ctrl+Alt+Left / Right | Back / forward |
| Ctrl+Shift+F10 | Run context at caret: the test at the caret (the class above its declaration), else the class’s main, else the file |
| Ctrl+U | Go to super method |
| Ctrl+Alt+Shift+C | Copy fully qualified name (IntelliJ’s Copy Reference) |
| Ctrl+Alt+F7 | Find usages |
| Ctrl+Shift+= / Ctrl+Shift+- (also on the numpad) | Expand all / collapse all folds |
So in that keymap F2 is no longer Rename, and Alt+Insert is New only in the
Project tree; New File elsewhere is Ctrl+Alt+Insert. On macOS the keymap follows
IntelliJ’s: ⌘N is Generate in the editor and New in the Project tree, New File
is ⌃⌘N, ⌃I is Override/Implement Methods, ⌘J is Insert snippet, ⌃⇧R runs the
context at caret, ⌘U goes to the super method, ⌘⇧= / ⌘⇧- expand and collapse all folds, and ⌘[ / ⌘] go back
and forward. Text zoom keeps Ctrl+= / Ctrl+- (⌘= / ⌘-). The command palette also
finds commands by IntelliJ’s and VS Code’s names for them: Optimize Imports,
Show Context Actions, Reformat Code, Find Usages, Go to Test,
Copy Reference, Show Call Hierarchy, Find Action, Super Method and others; typed
in full, such a name comes first. Menus in this keymap show Alt+Enter for Code Actions. The
VS Code keymap binds Ctrl+F12 Go to Implementation, Alt+F12 Peek Definition
and Ctrl+T Go to Symbol in Workspace (⌘F12, ⌥F12 and ⌘T on macOS). The default Emacs keymap gathers the language-server
commands under a C-c l prefix (C-c l a code actions, C-c l g generate,
C-c l t refactor this, C-c l r rename, C-c l f format, C-c l o organize
imports, C-c l e problem at caret, C-c l u undo last refactoring, and
others), with M-g M-n / M-g M-p for the next and previous problem and M-, /
C-M-, for back and forward. Every keymap now binds Back and Forward. The
Keybindings page lists them all.
Rebinding commands
The Settings → Keymaps page lists every command with its current chord. Click a row, or move to it with the arrow keys and press Enter, to show its buttons:
- Record captures a new chord. Multi-key sequences like
C-x C-swork. The field shows the chord in the active keymap’s notation (Ctrl+Shift+K,⇧⌘K, orC-S-kin the Emacs keymap), and so do the question about a clashing chord and the status-bar message. Enter saves it and Esc cancels. - Reset restores that command’s default chord. If another command has taken that chord, Editora asks first, because the other command loses it.
- Remove unbinds the command. Delete or Backspace on a row does the same.
- Reset all shortcuts clears every override of the keymap in use. Overrides made under another keymap stay with that keymap.
A chord cannot start with a key that types a character, such as a letter, a digit, punctuation or Space with no modifier other than Shift. Bound, that key would run the command everywhere you type, so Editora refuses it and asks you to add Ctrl, Alt or another modifier. When a new chord collides with existing bindings, Editora lists them and asks before binding it.
The Filter commands… field matches every word you type, in any order, so
save file finds File: Save. You can also type a chord in any notation:
Ctrl+S, C-s, ⇧⌘S or a sequence like Ctrl+K Ctrl+W lists the commands on
that chord, written the way the active keymap writes it.
Changes apply live across all windows. Your overrides are saved in
settings.json (the keymap name plus per-command entries) and layer on top of
the active keymap, so you only store what you change. Overrides are kept per
keymap: switching keymap does not unbind unrelated keys, and switching back
restores the rebinds you made there. Shortcuts of commands that no keymap binds
by default (saved macros, external tools and run configurations) follow you to
the new keymap instead. When the new keymap already uses that chord, or the
chord would clash with one of its chords, the shortcut stays with the keymap it
was made in and comes back when you switch back. Overrides are also stored per platform, since a chord is
modifier-specific (⌘ on macOS, Ctrl elsewhere), so a config synced between a Mac
and a Windows or Linux machine binds each OS’s own chord instead of both.
Settings sync can carry your overrides, for
every keymap, to your other computers; which keymap each one uses stays its
own.
The reference pages
- The Commands page lists every command grouped by area, with its description and default chord per keymap.
- The Keybindings page shows each keymap’s bindings grouped by area, with a tab per keymap.
Limitations
Modal Vim is deferred: the flat chord-to-command resolver can’t express a normal/insert/visual state machine yet.