Skip to content
/
Try

Skink commands and actions

Press Ctrl+E to open the command line, type a command and press Enter. Tab completes names and paths, ↑ and ↓ walk the history. You type the command in plain text; Skink shows the : on the left for you. That is why these docs write commands as :quit or :grep: type quit or grep. F1 opens the same list as a searchable palette.

CommandWhat it does
:addroot DIR
also :add-folder
add another project root (tree, quick open, project search)
:agent [MESSAGE | cancel | stop | send | errors]agent panel: chat with the configured ACP agent; send = selection or terminal output; errors = diagnostics or the last terminal command
:agentdockshow or hide the agent panel on the right (Alt-Shift-T)
:agents [check]supported agents, which are installed, the active one; check = test it now
:ai [TEXT]AI prompt box for the selection (Ctrl-G); /ask /search /implement /model inside
:amendtoggle amending the last commit in the message tab
:backback to where you were before the last jump (Alt-U)
:bindings
also :keys
open bindings.json (Micro format: key -> action); keys that replace a default or repeat show as problems
:blamegit blame of this file in a tab (Enter shows the commit)
:bothresolve the conflict under the cursor: keep both
:branch NAMEcreate branch NAME and switch to it
:brancheslocal branches; Enter switches
:breakpoint [if COND|hits N|log MSG|clear|clearall|list]
also :bp, :break
toggle a breakpoint on the cursor line (F9), or set a condition, hit count or logpoint
:commit [MESSAGE...]commit with MESSAGE, or open a message tab (saving it commits)
:conflictsopen all git-conflicted files at the first conflict
:cq
also :cancel
leave without saving and exit 1 (git aborts the commit or rebase)
:debug [NAME|stop|pause|continue|restart|panel|eval EXPR|watch EXPR]
also :dbg
debug: pick a launch configuration (F5 reruns the last), control the session, evaluate
:definition
also :def
go to the definition of the symbol at the cursor
:diff [HEAD|all]this file side by side against the index (or HEAD); `all`: `git diff`
:extract var|fn [NAME]extract the selection into a variable or function (server action; tree-sitter fallback for var)
:fetch [ARGS...]git fetch in a terminal tab
:foldfold or unfold the block at the cursor (Alt-M)
:foldallfold every top-level block
:fontsize +1|-1|0
also :font
change the terminal font size (EveryAI, Kitty; else use the terminal's keys)
:format
also :fmt
format the selection or the file with the language server
:forwardforward again after :back (Alt-Shift-U)
:git ARGS...run git, output in a tab
:gitstatus
also :status, :gitpanel
the git panel: status, stage, commit, branches, stash, push
:goto LINE[:COL]jump to a line
:grep [TEXT]
also :search, :rg
search every file in the project (Alt-s); results stream into a tab, Enter jumps
:greprep WITH
also :replace-in-files
replace the last project search's matches in every file, through the preview
:help [topic]
also :docs
open this documentation in a tab (topics: tabs, editing, conflicts, settings, ...)
:hiddenshow / hide dotfiles in the file tree (Alt-H)
:hsplit [FILE]
also :split, :sp
split the pane top and bottom, optionally opening FILE in the new pane (Alt-\)
:hunk
also :peekhunk
show the change at the cursor inline (s stage, u unstage, r revert)
:implementation
also :impl
go to the implementations of the symbol at the cursor
:inlineblametoggle the cursor line's blame
:install NAME | owner/repo[/package][@tag] | DIR | .install a package (grammar, language server, theme, font); . = what this project needs
:lsp [restart|log]language server status (memory, progress, log); restart it; full log
:messagesthe last notes and errors in full (toasts are cut to one line)
:mkdir [PATH]create a folder (parents too); relative to the project root
:modefull editor or a lean file for another tool, and why
:model [NAME | default]show or set the model for AI requests (until restart; settings: ai.model)
:mv [NEW_PATH]
also :move
move / rename the current file (relative to the project root); servers update imports
:new [PATH]
also :touch
create a file (parents too) and open it; relative to the project root
:nextconflictnext merge conflict
:nexthunkgo to the next git change
:onlyclose every pane but the focused one
:open [FILE[:LINE[:COL]]]
also :e, :tabnew
open a file or folder in a tab (no argument: new empty tab)
:oursresolve the conflict under the cursor: keep ours
:packages [enable NAME | disable NAME]installed packages; turn one off or on without removing it
:port PORT[:LOCAL]skink ssh: forward a port of this machine to yours (:port 3000, :port 3000:8080)
:ports [stop PORT | forward PORT[:LOCAL]]skink ssh: ports listening on this machine and their forwards; stop one (:port adds one)
:prevconflictprevious merge conflict
:prevhunkgo to the previous git change
:previewlive preview of this Markdown or SVG file in a tab (Alt-V); again to go back
:problems
also :diagnostics
errors and warnings of the open files (Enter jumps)
:pull [ARGS...]git pull in a terminal tab
:push [ARGS...]git push in a terminal tab (credentials stay with git)
:qa
also :quitall
quit everything (refuses when tabs have unsaved changes)
:quit
also :q
close the tab (quits on the last document tab)
:rebase pick|reword|edit|squash|fixup|dropset the verb of the cursor line in git-rebase-todo (Alt-Shift-K cycles)
:recent
also :quickopen
quick open: tabs, recent files, project files (Alt-P)
:references
also :refs
every use of the symbol at the cursor (Enter jumps)
:reloadreload settings.json and bindings.json
:remotessaved skink ssh targets ("remotes" in settings.json)
:removeroot [DIR]remove an added root (no argument: the one selected in the tree)
:renamesymbol NEW_NAME
also :rn
rename the symbol at the cursor everywhere (language server; shown in the preview)
:replace FIND WITH
also :replaceall
replace every FIND with WITH (selection, else whole file; literal; quote to use spaces)
:reverthunkput the index version of the change at the cursor back (undoable)
:reviewreview the edits the agent staged (refactor preview)
:run COMMAND...
also :!
run a shell command in the project root, output in a tab
:safedeletedelete the declaration at the cursor if find-references shows no other use; preview first
:safedelete!preview deleting the declaration at the cursor without checking references
:save
also :w
save the file
:scrollback [last]
also :termhistory
the terminal's history in a searchable tab (Shift-F11); `last` selects the last output (Shift-F4)
:set eol=lf|crlfset a file option (line endings are written on the next save)
:settings [project]open settings.json (created with defaults if missing); project: this project's .skink/settings.json
:sgrep PATTERN
also :structural
structural search (ast-grep) in files of the current language: `foo($A, $$$REST)`
:signofftoggle a Signed-off-by line in the message tab
:srep PATTERN => WITHstructural replace through the preview: `srep foo($A, $B) => bar($B, $A)`
:stage [PATH]git add this file (or PATH)
:stagehunkstage the change at the cursor
:stash [MESSAGE...]stash the current changes
:stasheslist stashes; Enter applies, p pops, D drops
:stopsearchstop a running project search
:switch BRANCH
also :checkout
switch to BRANCH
:symbols
also :outline
symbols in this file
:tab Nselect tab N
:task [LABEL|last]
also :tasks
run a task in a terminal tab (Shift-F10 picks, Shift-F9 reruns); problems go to Shift-F8
:term [COMMAND...]
also :terminal
new terminal tab running COMMAND (default: your shell), e.g. `term claude`
:termdock
also :panel
show or hide a shell along the bottom (Alt-T)
:theirsresolve the conflict under the cursor: keep theirs
:theme [NAME]
also :colorscheme
pick a theme with a live preview (Esc keeps the old one), or switch to NAME
:tree [collapse|expand|hide|hidden]show / focus the file tree (F8); collapse all, expand the selected folder, hide it, show/hide dotfiles
:unfoldallopen every fold (Alt-Shift-M)
:uninstall NAMEremove a package and everything it placed
:unsplit
also :close-pane
close the focused pane; its tab stays open (Alt-Q)
:unstage [PATH]take this file (or PATH) out of the index
:unstagehunkunstage the staged change at the cursor
:upgrade
also :update
download and install the latest skink release (runs from the next start)
:vsplit [FILE]
also :vs
split the pane side by side, optionally opening FILE in the new pane (Ctrl-\)
:zoomzoom pane: only the text (also Alt-Z)

Actions

Every action can be bound to a key in bindings.json or run by name from the command line, for example :SelectAll.

ActionWhat it does
QuitQuit the editor
SaveSave the file
FindSearch in the file
FindNextNext match
FindPreviousPrevious match
UndoUndo
RedoRedo
CursorUpMove up
CursorDownMove down
CursorLeftMove left
CursorRightMove right
SelectUpSelect up
SelectDownSelect down
SelectLeftSelect left
SelectRightSelect right
WordLeftMove a word left
WordRightMove a word right
SelectWordLeftSelect a word left
SelectWordRightSelect a word right
StartOfLineStart of line
StartOfTextFirst non-blank
StartOfTextToggleFirst non-blank / column 0
EndOfLineEnd of line
SelectToStartOfTextToggleSelect to line start
SelectToEndOfLineSelect to line end
CursorStartStart of file
CursorEndEnd of file
SelectToStartSelect to file start
SelectToEndSelect to file end
CursorPageUpPage up
CursorPageDownPage down
SelectPageUpSelect page up
SelectPageDownSelect page down
SelectAllSelect all
DeselectClear selection
EscapeCancel
ClearInfoClear the status message
InsertNewlineInsert a newline
InsertTabInsert a tab
BackspaceDelete backwards
DeleteDelete forwards
DeleteWordLeftDelete word left
DeleteWordRightDelete word right
IndentSelectionIndent selected lines
OutdentSelectionOutdent selected lines
OutdentLineOutdent the line
MoveLinesUpMove lines up
MoveLinesDownMove lines down
DuplicateDuplicate the selection
DuplicateLineDuplicate the line
CopyCopy the selection
CopyLineCopy the line
CutCut the selection
CutLineCut the line
PastePaste
JoinLinesJoin the selected lines (or the next line)
SortLinesSort the selected lines
UpperCaseSelection / word to UPPER CASE
LowerCaseSelection / word to lower case
TitleCaseSelection / word to Title Case
TrimTrailingWhitespaceRemove trailing spaces on every line
ToggleCommentComment / uncomment the lines
SpawnMultiCursorSelect the word, then add a cursor at the next match
SpawnMultiCursorUpAdd a cursor on the line above
SpawnMultiCursorDownAdd a cursor on the line below
SkipMultiCursorSkip this match and select the next
RemoveMultiCursorRemove the newest cursor
RemoveAllMultiCursorsBack to a single cursor
ConflictNextNext merge conflict
ConflictPreviousPrevious merge conflict
AcceptOursResolve conflict: keep ours
AcceptTheirsResolve conflict: keep theirs
AcceptBothResolve conflict: keep both
DebugContinueDebug: start (the last configuration, or pick one) or continue
DebugStopDebug: stop the program (again: kill the adapter)
DebugStepOverDebug: step over (falls through to the next action when not debugging)
DebugStepIntoDebug: step into (falls through when not debugging)
DebugStepOutDebug: step out (falls through when not debugging)
DebugPauseDebug: pause the running program (falls through when nothing runs)
ToggleBreakpointDebug: breakpoint on the cursor line, on or off
EditBreakpointDebug: condition, hit count or log message of the cursor line's breakpoint
DebugPanelDebug: the panel (stack, variables, watch, breakpoints, console) on or off
CycleRebaseVerbRebase list: pick → reword → edit → squash → fixup → drop on the cursor line
ToggleMacroStart / stop recording a keyboard macro
PlayMacroReplay the last keyboard macro
TerminalHistoryThe terminal's history in a tab: search, select and copy with editor keys; Enter opens file:line
SelectLastOutputSelect the last command's output in the terminal history (needs OSC 133)
PreviousPromptScroll the terminal to the previous shell prompt (needs OSC 133)
NextPromptScroll the terminal to the next shell prompt (needs OSC 133)
RunTaskPick a task (tasks.json or detected cargo / npm / go / zig / pytest / make) and run it
RerunTaskRun the last task again
NextHunkGo to the next git change
PreviousHunkGo to the previous git change
PeekHunkShow the git change at the cursor (s stage, u unstage, r revert)
StageHunkStage the git change at the cursor
UnstageHunkUnstage the staged change at the cursor
RevertHunkPut the index version of the change at the cursor back
ToggleInlineBlameShow or hide the cursor line's git blame
GitPanelGit status, staging, commit, branches, stash, push / pull
JumpBackBack to where you were before the last jump
JumpForwardForward again after JumpBack
ToggleTerminalDockShow or hide a shell along the bottom
ToggleAgentDockShow or hide the agent panel on the right
ToggleFoldFold or unfold the block at the cursor (by indentation)
FoldAllFold every top-level block
UnfoldAllOpen every fold
FindInFilesSearch every file in the project
VSplitSplit the pane: a new one to the right (same file, own cursor)
HSplitSplit the pane: a new one below (same file, own cursor)
NextSplitFocus the next pane
PreviousSplitFocus the previous pane
UnsplitClose the focused pane (its tab stays open)
GrowSplitMake the focused pane bigger
ShrinkSplitMake the focused pane smaller
PreviousTabSelect the tab to the left
NextTabSelect the tab to the right
FirstTabSelect the first tab
LastTabSelect the last tab
AddTabNew empty document tab
OpenFileOpen a file or folder by path
QuickOpenQuick open: tabs, recent and project files
ToggleTreeShow / focus the file tree
JumpToMatchingBraceMove to the bracket matching the one at the cursor
ScrollLeftScroll the view left without moving the cursor
ScrollRightScroll the view right without moving the cursor
TogglePreviewPreview this Markdown or SVG file in a tab, or go back to its source
ToggleZoomzoom pane: hide the tab bar, file tree and status line
FontBiggerbigger terminal font (EveryAI or Kitty)
FontSmallersmaller terminal font (EveryAI or Kitty)
FontResetdefault terminal font size (EveryAI or Kitty)
ExpandSelectiongrow the selection to the enclosing syntax node
ShrinkSelectionundo the last ExpandSelection
TreeWidermake the file tree wider
TreeNarrowermake the file tree narrower
ToggleHiddenFilesshow / hide dotfiles in the file tree (works from the editor too)
ToggleSidebarHide / show the file tree sidebar
ToggleTerminalJump between the document and a terminal tab
NewTerminalOpen another terminal tab
CloseTerminalClose the active terminal tab
Completecompletion list at the cursor (language server)
Hovertype and docs of the symbol at the cursor (its value while debugging)
GotoDefinitiongo to the definition of the symbol at the cursor
GotoDeclarationgo to the declaration of the symbol at the cursor
GotoTypeDefinitiongo to the definition of the type at the cursor
GotoImplementationgo to the implementations of the symbol at the cursor
PeekDefinitionshow the definition in a popup without leaving
FindReferencesevery use of the symbol at the cursor, in a results tab
CodeActionsquick fixes and refactorings at the cursor
Formatformat the selection or the file (language server)
Outlinesymbols in this file (quick open with @)
WorkspaceSymbolssymbols in the project (quick open with #)
CommandPaletteevery action and command (quick open with >)
AiPromptAI prompt box for the selection or the code at the cursor
AgentPanelshow the agent panel (chat with the ACP agent)
AgentSendErrorssend the errors to the agent: diagnostics, or the last command in a terminal
RenameSymbolrename the symbol at the cursor (asks for the new name)
ReviewAgentEditsreview the edits the agent staged
Problemserrors and warnings of the open files, in a results tab
NextDiagnosticnext error or warning in this file
PreviousDiagnosticprevious error or warning in this file