Change key bindings in Skink (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.
-
Press Ctrl+E and run
bindings. The file opens in a tab (created empty when missing). -
Add your bindings:
{"Ctrl-j": "Save","Alt-g": "command-edit:goto "} -
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 in bindings.json
Section titled “Key names in bindings.json”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.
Action values
Section titled “Action values”| 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.
Examples
Section titled “Examples”{ // 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.
Terminal tabs and your bindings
Section titled “Terminal tabs and your bindings”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.
Keys your terminal may not send
Section titled “Keys your terminal may not send”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.
Finding what a key does
Section titled “Finding what a key does”- Keyboard shortcuts lists every default binding with its typed command.
:helpopens 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.