Customizing keys
Key bindings live in config.toml (not in Settings). Each table maps keys, in vim notation, to a command name.
[keys]
insert_escape = "<C-\\>"
global_start_work = "<C-M-Space>" # Start work from any app; "" turns it off
global_activate = "<C-M-h>"
[keys.normal]
"<C-j>" = "row.next"
"gC" = "" # "" unbinds a default
[keys.repos]
"x" = "select.remove"
- leaves INSERT (⇧⎋ does too)
- brings Heed forward from any app
- Per mode:
[keys.normal],[keys.visual],[keys.insert],[keys.command],[keys.hint]. - Per view:
[keys.sessions],[keys.inbox],[keys.issues],[keys.prs],[keys.repos],[keys.history],[keys.diff],[keys.pr],[keys.issue]. View keys apply in NORMAL in that view, before NORMAL's own. - Notation:
gg,<C-w>v(⌃w then v),<D-/>(⌘/),<M-x>(⌥x),<S-Tab>,<CR>,<Esc>,<Space>.
The key reference lists every command name; : completes them.
A binding that would hide another is refused, with a message in the status bar naming the clash:
- Within one table,
ggandgcannot both be bound: one could never fire. - A view binding cannot start with a key that is a NORMAL command (
iwwould makeiwait), nor be the start of a NORMAL binding (a viewgwould hidegg). Replacing a NORMAL key outright in one view is fine.
Mistakes never take the rest down: the binding is skipped, the problem reported, and every other key keeps working.