Skip to content
/
Try

Change key bindings in Skink (bindings.json)

Find an action in F1, bind it in bindings.json.

Run :bindings to open bindings.json, add "Key": "Action" pairs, save, and run :reload. The format is Micro’s, so a Micro bindings.json works as it is.

  1. Press Ctrl+E and run bindings. The file opens in a tab (created empty when missing).

  2. Add your bindings:

    {
    "Ctrl-j": "Save",
    "Alt-g": "command-edit:goto "
    }
  3. Save with Ctrl+S, then run reload. Unknown key names are reported in the status line.

Your bindings are added on top of the defaults. Remove a line and :reload, and that key goes back to its default.

All defaults are listed in Keyboard shortcuts.

Key names follow Micro. The one surprise: with Alt, a capital letter means Shift too. "Alt-G" is Alt+Shift+G, and "Alt-g" is Alt+G. This notation is only for the file; the docs and the in-app help write keys as you press them.

Kind Examples
Letters and symbols Ctrl-q, Alt-/, Ctrl-], Alt-.
Shift with Alt Alt-G (capital letter)
Ctrl and Shift CtrlShift-d, CtrlShiftUp
Movement Up, Down, Left, Right, Home, End, PageUp, PageDown
With modifiers ShiftUp, CtrlHome, Alt-CtrlDown, CtrlPageDown
Other Enter, Tab, Backtab, Backspace, Delete, Insert, Esc, Space
Function keys F1 to F20, ShiftF12

The dash after a modifier is optional: CtrlHome and Ctrl-Home are the same.

Value Meaning
"Save" One action
"Copy|CopyLine" Try each in order; the first that works runs
"Escape,Deselect" Run all of them, in order
"command-edit:TEXT" Open the command line with TEXT already typed

Every action is listed in the manual and in the command palette (F1).

Commands are in Commands.

{
// VS Code habits
"Ctrl-p": "QuickOpen", // instead of FindPrevious
"Ctrl-w": "Quit", // close the tab (default: next pane)
"Ctrl-g": "command-edit:goto ", // go to line (default: AI prompt box)
// Terminal tabs on other keys
"F7": "ToggleTerminal",
"ShiftF7": "NewTerminal",
// Font size, in Kitty or EveryAI
"Alt-=": "FontBigger",
"Alt--": "FontSmaller",
// Shortcuts to commands
"Alt-b": "command-edit:blame",
"Alt-y": "command-edit:run cargo test"
}

command-edit: only fills in the command line; press Enter to run it.

Rebinding a key replaces its default. In the example, Alt+= no longer grows the pane, so pick keys you do not need.

Inside a terminal tab, keys go to the program. The exceptions are Alt+1…9, Ctrl+PageUp / PageDown, and F-keys bound to Skink’s app actions (ToggleTerminal, NewTerminal, CloseTerminal, ToggleTree, ToggleSidebar, PreviousTab, NextTab).

So if you want a key that also works from a terminal tab, use an F-key. See Terminal tabs.

Classic terminal key encoding cannot tell some chords apart. Skink turns on the kitty keyboard protocol when it detects a terminal that supports it (Ghostty, Kitty, WezTerm, foot, Alacritty, Rio, iTerm2), and then every chord arrives as pressed.

Elsewhere, including most tmux and mosh sessions, these arrive differently:

You press Arrives as Workaround
Ctrl+Shift+D Ctrl+D Bind Duplicate|DuplicateLine to another key
Ctrl+Shift+F Ctrl+F Use Alt+S for project search
Ctrl+] Ctrl+5 Add "Ctrl-5": "JumpToMatchingBrace"
Ctrl+\ Ctrl+4 Already bound to the same split
Ctrl+/ Ctrl+7 Already bound to toggle comment

Without the protocol, a quick Esc followed by a letter can also look like Alt+letter.

If the protocol causes trouble in an unusual setup, set SKINK_NO_KITTY_KEYS=1 to turn it off.

On a Mac, Option types special characters instead of acting as Alt. Skink handles most of this for you; see macOS Option key.

When a key does not reach Skink: type its command

Section titled “When a key does not reach Skink: type its command”

You do not have to rebind a key that your terminal, tmux, the OS or your keyboard layout swallows. Press Ctrl+E and type the key’s command instead, for example comment, dotfiles or nexthunk.

Any action also runs by its own name, in any spelling: ToggleComment, toggle-comment and togglecomment are the same.

The short names are listed in Every key has a typed command.

  • Keyboard shortcuts lists every default binding with its typed command.
  • :help opens the manual, which ends with the full key table and the command for each key.
  • F1 opens the command palette with every action, its key and its command.