Nermal
Customization

Keybindings

Rebinding anything, chord sequences, and the tmux preset.

Settings → Keybindings (⌘ ,) lists every shortcut in the app, grouped the same way the command palette is. The search box at the top of Settings reaches this page too: type what a feature is called — split, commit, sftp — and the page narrows to the shortcuts for it. Action names work as well as labels, so a binding you read about in keybindings.json is one search away from the row that sets it.

Rebinding

Click a shortcut and press the new keys. It saves after a brief pause.

Press keysSet the binding
Press more keysChain a sequence — ⌃ B then X
EscCancel
⌫Remove the last key — or, pressed first, reset the shortcut to its default

Restore all defaults at the bottom undoes every rebinding at once. There is no undo for that one.

Rebinding a shortcut
Placeholder — screenshot: the Keybindings page mid-capture, showing “Press keys…”

Actions with no default key

Some actions ship deliberately unbound, because there is no obvious key left to take: pane resize and swap, workspace selection, most git commands, SFTP, and the panel tabs. They are all in the command palette, and all bindable here.

Editing config.json instead

{
  "keybindings": {
    "SplitRight": "cmd-d",
    "ResizePaneLeft": "ctrl-alt-left",
    "ToggleSftp": "cmd-shift-u"
  }
}

The syntax is modifiers joined by -, then the key. Chords are separated by a space.

TokenMeans
secondary⌘ on macOS, Ctrl elsewhere
cmd · ctrl · alt · shiftLiteral modifiers
ctrl-b nA two-key sequence

An unknown action name or an invalid keystroke is skipped with a warning in the log rather than breaking the rest of your bindings.

The full action list is on the keyboard shortcuts page.

The tmux preset

Settings → Keybindings → Preset → tmux remaps pane and tab actions onto a prefix — ⌃ B by default, changeable in the Prefix field beside it.

⌃ B C · XNew tab · close tab
⌃ B % · "Split right · split down
⌃ B ←→↑↓Move focus
⌃ B ⌃ ←→↑↓Resize the pane
⌃ B O · ;Next pane · previous pane
⌃ B { · }Swap with the previous · next pane
⌃ B ZZoom the pane
⌃ B N · PNext tab · previous tab
⌃ B 1…9Jump to a tab

Two details that make it livable:

  • A bare prefix reaches the shell after about a second, so ⌃ B still works as "back one character" when you meant it.
  • Prefix plus an unbound key is passed straight through to the terminal, so a tmux binding you did not remap still lands in whatever is running.

Some non-obvious defaults

⇧ ⏎ · ⌥ ⏎Insert a newline at the prompt instead of submitting (InsertNewline)
⌘ ⇧ ⏎Zoom the focused pane
⌘ ⇧ EToggle the code panel
⌘ ⇧ RRestart the SSH session in this pane
⌘ ⇧ OWorkspace switcher
⌘ ⇧ NNew workspace
Sponsor