# Skink keyboard shortcuts (complete list)

> Every default key binding in Skink, the modeless terminal editor, grouped by task, with the action name to rebind it in bindings.json.

Source: https://skink.cc/reference/shortcuts/

These are Skink's default bindings, read straight from the editor's source at build time, so they always match the current release. They follow [Micro](https://micro-editor.github.io)'s defaults. To change one, put the key and the action name in `bindings.json` (see [Key bindings](https://skink.cc/customize/keybindings/)).

On macOS, Alt is Option; see [Option as Alt](https://skink.cc/customize/macos-option-key/). Inside the editor, F1 opens the command palette with every action, and `:help` shows this table too.

## AI and agents

| Key | Does | Or type |
|---|---|---|
| Ctrl+G | AI prompt box for the selection or the code at the cursor | `ask` |
| Alt+Shift+A | show the agent panel (chat with the ACP agent) | `agentpanel` |
| Alt+Shift+E | send the errors to the agent: diagnostics, or the last command in a terminal | `senderrors` |
| Alt+Shift+T | Show or hide the agent panel on the right | `toggleagentdock` |

## Debugger

| Key | Does | Or type |
|---|---|---|
| F11 | Debug: step into (falls through when not debugging) | `stepin` |
| Shift+F11 | Debug: step out (falls through when not debugging) | `stepout` |
| F10 | Debug: step over (falls through to the next action when not debugging) | `step` |
| F9 | Debug: breakpoint on the cursor line, on or off | `togglebreakpoint` |
| Alt+F9 | Debug: condition, hit count or log message of the cursor line's breakpoint | `condition` |
| F6 | Debug: pause the running program (falls through when nothing runs) | `pause` |
| F5 | Debug: start (the last configuration, or pick one) or continue | `continue` |
| Shift+F5 | Debug: stop the program (again: kill the adapter) | `debugstop` |
| Alt+L | Debug: the panel (stack, variables, watch, breakpoints, console) on or off | `debugpanel` |

## Terminal

| Key | Does | Or type |
|---|---|---|
| F12 | Jump between the document and a terminal tab | `toggleterm` |
| Shift+F12 | Open another terminal tab | `newterm` |
| Shift+F4 | Select the last command's output in the terminal history (needs OSC 133) | `lastoutput` |
| Shift+F2 | Scroll the terminal to the previous shell prompt (needs OSC 133) | `prevprompt` |
| Shift+F3 | Scroll the terminal to the next shell prompt (needs OSC 133) | `nextprompt` |
| Alt+T | Show or hide a shell along the bottom | `toggleterminaldock` |

## Git

| Key | Does | Or type |
|---|---|---|
| Alt+Shift+K | Rebase list: pick → reword → edit → squash → fixup → drop on the cursor line | `cyclerebaseverb` |
| Alt+Shift+N | Go to the next git change | `nexthunk` |
| Alt+Shift+P | Go to the previous git change | `previoushunk` |
| Alt+Shift+D | Show the git change at the cursor (s stage, u unstage, r revert) | `peekhunk` |
| Alt+Shift+S | Stage the git change at the cursor | `stagehunk` |
| Alt+Shift+B | Show or hide the cursor line's git blame | `toggleinlineblame` |
| Alt+Shift+C | Git status, staging, commit, branches, stash, push / pull | `gitpanel` |

## Code intelligence

| Key | Does | Or type |
|---|---|---|
| Tab | Indent selected lines | `indent` |
| Shift+Tab | Outdent selected lines | `outdent` |
| Alt+K | type and docs of the symbol at the cursor (its value while debugging) | `hover` |
| Alt+G | go to the definition of the symbol at the cursor | `gotodefinition` |
| Alt+Shift+G | go to the definition of the type at the cursor | `typedef` |
| Alt+J | show the definition in a popup without leaving | `peek` |
| Alt+R | every use of the symbol at the cursor, in a results tab | `findreferences` |
| Alt+Enter | quick fixes and refactorings at the cursor | `fix` |
| Alt+Shift+F | format the selection or the file (language server) | `format` |
| Alt+W | symbols in the project (quick open with #) | `allsymbols` |
| Shift+F8 | errors and warnings of the open files, in a results tab | `problems` |
| Alt+Shift+R | rename the symbol at the cursor (asks for the new name) | `renamesymbol` |
| Shift+F6 | previous error or warning in this file | `prevproblem` |

## Search

| Key | Does | Or type |
|---|---|---|
| Ctrl+F | Search in the file | `find` |
| Ctrl+N | Next match | `findnext` |
| Ctrl+P | Previous match | `findprev` |
| F3 | Search in the file | `find` |
| F7 | Search in the file | `find` |
| Alt+S | Search every file in the project | `findinfiles` |
| Ctrl+Shift+F | Search every file in the project | `findinfiles` |

## Tabs, panes and layout

| Key | Does | Or type |
|---|---|---|
| Ctrl+Shift+H | Delete backwards | `backspace` |
| Backspace | Delete backwards | `backspace` |
| Ctrl+Q | Quit the editor | `quit` |
| Alt+P | Quick open: tabs, recent and project files | `quickopen` |
| Alt+, | Select the tab to the left | `prevtab` |
| Alt+. | Select the tab to the right | `nexttab` |
| Ctrl+T | New empty document tab | `newtab` |
| Ctrl+O | Open a file or folder by path | `openfile` |
| Ctrl+PageUp | Select the tab to the left | `prevtab` |
| Ctrl+PageDown | Select the tab to the right | `nexttab` |
| F8 | Show / focus the file tree | `files` |
| Ctrl+B | Hide / show the file tree sidebar | `sidebar` |
| Ctrl+U | Start / stop recording a keyboard macro | `record` |
| Ctrl+J | Replay the last keyboard macro | `replay` |
| Shift+F10 | Pick a task (tasks.json or detected cargo / npm / go / zig / pytest / make) and run it | `runtask` |
| Shift+F9 | Run the last task again | `rerun` |
| F4 | Quit the editor | `quit` |
| Alt+Z | zoom pane: hide the tab bar, file tree and status line | `togglezoom` |
| Alt+H | show / hide dotfiles in the file tree (works from the editor too) | `dotfiles` |
| F1 | every action and command (quick open with >) | `palette` |
| Ctrl+\ | Split the pane: a new one to the right (same file, own cursor) | `vsplit` |
| Ctrl+4 | Split the pane: a new one to the right (same file, own cursor) | `vsplit` |
| Alt+\ | Split the pane: a new one below (same file, own cursor) | `hsplit` |
| Ctrl+W | Focus the next pane | `nextsplit` |
| Alt+U | Back to where you were before the last jump | `jumpback` |
| Alt+Shift+U | Forward again after JumpBack | `jumpforward` |
| Alt+M | Fold or unfold the block at the cursor (by indentation) | `togglefold` |
| Alt+Shift+W | Focus the previous pane | `prevsplit` |
| Alt+= | Make the focused pane bigger | `growsplit` |
| Alt+- | Make the focused pane smaller | `shrinksplit` |

## Selecting

| Key | Does | Or type |
|---|---|---|
| Shift+↑ | Select up | `selectup` |
| Shift+↓ | Select down | `selectdown` |
| Shift+← | Select left | `selectleft` |
| Shift+→ | Select right | `selectright` |
| Ctrl+Shift+→ | Select a word right | `selectwordright` |
| Ctrl+Shift+← | Select a word left | `selectwordleft` |
| Alt+Shift+← | Select to line start | `selecttostartoftexttoggle` |
| Shift+Home | Select to line start | `selecttostartoftexttoggle` |
| Alt+Shift+→ | Select to line end | `selecttoendofline` |
| Shift+End | Select to line end | `selecttoendofline` |
| Ctrl+Shift+↑ | Select to file start | `selecttostart` |
| Ctrl+Shift+↓ | Select to file end | `selecttoend` |
| Ctrl+D | Select the word, then add a cursor at the next match | `addcursor` |
| Ctrl+A | Select all | `selectall` |
| Ctrl+Shift+Home | Select to file start | `selecttostart` |
| Ctrl+Shift+End | Select to file end | `selecttoend` |
| Shift+PageUp | Select page up | `selectpageup` |
| Shift+PageDown | Select page down | `selectpagedown` |
| Esc | Cancel | `escape` |
| Alt+N | Select the word, then add a cursor at the next match | `addcursor` |
| Alt+O | grow the selection to the enclosing syntax node | `expand` |
| Alt+I | undo the last ExpandSelection | `contract` |
| Alt+Shift+↑ | Add a cursor on the line above | `cursorabove` |
| Alt+Shift+↓ | Add a cursor on the line below | `cursorbelow` |
| Ctrl+Alt+↑ | Add a cursor on the line above | `cursorabove` |
| Ctrl+Alt+↓ | Add a cursor on the line below | `cursorbelow` |
| Alt+C | Back to a single cursor | `onecursor` |
| Alt+X | Skip this match and select the next | `skipcursor` |

## Moving around

| Key | Does | Or type |
|---|---|---|
| ↑ | Move up | `cursorup` |
| ↓ | Move down | `cursordown` |
| → | Move right | `cursorright` |
| ← | Move left | `cursorleft` |
| Ctrl+← | Move a word left | `wordleft` |
| Ctrl+→ | Move a word right | `wordright` |
| Alt+← | First non-blank / column 0 | `startoftexttoggle` |
| Alt+→ | End of line | `endofline` |
| Ctrl+↑ | Start of file | `cursorstart` |
| Ctrl+↓ | End of file | `cursorend` |
| Ctrl+Alt+Shift+H | Delete word left | `deletewordleft` |
| Alt+Backspace | Delete word left | `deletewordleft` |
| Home | First non-blank / column 0 | `startoftexttoggle` |
| End | End of line | `endofline` |
| Ctrl+Home | Start of file | `cursorstart` |
| Ctrl+End | End of file | `cursorend` |
| PageUp | Page up | `cursorpageup` |
| PageDown | Page down | `cursorpagedown` |
| Ctrl+] | Move to the bracket matching the one at the cursor | `bracket` |
| Alt+F | Move a word right | `wordright` |
| Alt+B | Move a word left | `wordleft` |
| Alt+A | First non-blank | `startoftext` |
| Alt+E | End of line | `endofline` |
| Ctrl+Delete | Delete word right | `deletewordright` |
| Alt+D | Delete word right | `deletewordright` |

## Editing

| Key | Does | Or type |
|---|---|---|
| Alt+↑ | Move lines up | `moveup` |
| Alt+↓ | Move lines down | `movedown` |
| Enter | Insert a newline | `insertnewline` |
| Ctrl+S | Save the file | `save` |
| Ctrl+Z | Undo | `undo` |
| Ctrl+Y | Redo | `redo` |
| Ctrl+C | Copy the selection | `copy` |
| Ctrl+X | Cut the selection | `cut` |
| Ctrl+K | Cut the line | `cutline` |
| Ctrl+Shift+D | Duplicate the selection | `duplicate` |
| Ctrl+V | Paste | `paste` |
| Delete | Delete forwards | `delete` |
| Ctrl+L | Opens the command line with `goto` |  |
| Ctrl+E | Opens the command line |  |
| F2 | Save the file | `save` |
| Alt+V | Preview this Markdown or SVG file in a tab, or go back to its source | `togglepreview` |
| Alt+/ | Comment / uncomment the lines | `comment` |
| Ctrl+/ | Comment / uncomment the lines | `comment` |
| Ctrl+7 | Comment / uncomment the lines | `comment` |
| Ctrl+Space | completion list at the cursor (language server) | `complete` |
| Ctrl+R | symbols in this file (quick open with @) | `outline` |
| Alt+Shift+M | Open every fold | `unfoldall` |
| Alt+Q | Close the focused pane (its tab stays open) | `unsplit` |
