Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

dk manual

Command line

Open each file in the ductus editor, and show the first one. A file that does not
exist yet opens empty. With no file, dk opens an empty [scratch] buffer.
With one directory, dk opens [scratch] and the file picker at that directory.
--tabs, --split-right and --split-below open each file in a tab page of its own,
or in a view to the right of or below the one before.
Use -- or ./ before a file name that starts with a dash or that names a command,
such as dk ./trust.

Usage:
  dk [file...|directory] [flags]
  dk [command]

Available Commands:
  completion     Generate the autocompletion script for the specified shell
  default-config Print a config.toml with every key at its default
  diff           Open two files in a diff session
  grammar        Fetch or build the tree-sitter grammars
  health         Print what each language has
  help           Help about any command
  trust          Trust the .ductus of the workspace

Flags:
  -d, --debug         Enable debug logging
  -h, --help          help for dk
      --log string    write the debug log to this file, also with no --debug
  -o, --split-below   open each file in a view below the one before
  -O, --split-right   open each file in a view to the right of the one before
  -p, --tabs          open each file in a tab page of its own
  -v, --version       version for dk

Use "dk [command] --help" for more information about a command.

Config keys

KeyDefaultDescription
theme"nord"The Helix theme dk draws in: a name, or { light = “…”, dark = “…” }.
editor.auto-completiontrueA completion request starts on its own.
editor.auto-formattrue:w formats the file first, in a language that auto-formats.
editor.auto-infotrueA box shows the keys that can follow a pending key.
editor.auto-pairstruetrue, false, or a table such as { ‘(’ = ‘)’ }: a typed bracket inserts its pair.
editor.auto-reloadtrueA file that another program changes reloads, in a document with no unsaved changes. A .ductus cannot set it.
editor.clipboard-provider"tmux" (example)How + and * reach the clipboard: a provider name, or { custom = { yank = …, paste = … } }. Detected at first use by default. A .ductus cannot set it.
editor.color-modestrueThe mode element of the focused view and the mode label of a picker draw in ui.statusline.normal, .insert, or .select.
editor.completion-replacefalseAn item replaces the word after the cursor too.
editor.completion-timeout250The ms after the last typed word char before a completion request starts.
editor.completion-trigger-len2The typed word chars before a completion request starts, 0 to 255.
editor.default-yank-register"\""The register of y, d, c, p, P and R when “ picks none. A .ductus cannot set it.
editor.gutter-diff"vcs"What the diff gutter compares with: “vcs” for the vcs base, “disk” for the file on disk, or “both”, where a line that differs from the file on disk shows that diff.
editor.indent-heuristic"hybrid"The indent of a new line: simple, tree-sitter, or hybrid.
editor.jump-label-alphabet"abcdefghijklmnopqrstuvwxyz"The chars of the labels of gw: two or more, each one time and one column wide.
editor.line-number"absolute"“absolute”, or “relative” to the line of the cursor.
editor.middle-click-pastetrueA mouse selection yanks to mouse-yank-register, and a middle click pastes it.
editor.mousetruefalse turns the mouse off, so the terminal selects text itself.
editor.mouse-yank-register"*"The register that a mouse selection yanks to and a middle click pastes. Only this file sets it.
editor.picker-size80The percent of the width and of the height that a picker takes, 10 to 100.
editor.picker-start-mode"normal"“normal”, or “insert” so that a new picker types into the query at once.
editor.popup-border"popup"The boxes in a frame: “popup” for the popups and the docs pane, “menu” for the completion menu, “all”, or “none”.
editor.preview-completion-inserttrueThe selected completion item shows in the text.
editor.print-command["enscript"]The program and first args that :print-document sends the text to on stdin. With a file, dk adds -o - for PostScript on stdout. Only this file sets it.
editor.rainbow-bracketstrueBrackets draw in the colors of the rainbow of the theme, by their depth. The rainbow-brackets of a language takes its place.
editor.restore-cursortrueA file opens where its cursor was when it last closed. false opens it at the start. Only this file sets it.
editor.restore-cursor-files100How many files keep a place, 1 to 10000. Only this file sets it.
editor.rulers[]The columns of the text, from 1, that show a ruler in ui.virtual.ruler. The rulers of a language take their place.
editor.scrolloff5The rows and columns that a view keeps between the cursor and its edges, 0 to 1000.
editor.shell["sh", "-c"]The program and first args that run a shell command, with the command line last. Only this file sets it.
editor.tabline"multiple"When the top row shows the tab pages: “multiple” with more than one, “always”, or “never”.
editor.text-width80The display columns of each line that g q fills, 1 or more.
editor.undofile-exclude["*.env", "**/.git/COMMIT_EDITMSG"]Globs of files that keep no undofile. A list replaces them.
editor.url-opener["xdg-open"]The program and first args that open a URL of g f, with the URL last. Only this file sets it.
editor.file-picker.deduplicate-linkstruespace f and space / skip each link that resolves inside the root.
editor.file-picker.follow-symlinkstruespace f and space / go into a linked directory, and into each link target once.
editor.file-picker.git-excludetruespace f and space / skip what .git/info/exclude names, in a repo.
editor.file-picker.git-globaltruespace f and space / skip what the core.excludesFile of git names, in a repo.
editor.file-picker.git-ignoretruespace f and space / skip what .gitignore names, in a repo.
editor.file-picker.hiddentruespace f and space / skip each name that starts with a dot.
editor.file-picker.ignoretruespace f and space / skip what .ignore names.
editor.file-picker.max-depth1 (example)space f and space / list no file deeper than this level, 1 for the files of the root. No limit by default.
editor.file-picker.parentstrueThe ignore files of the directories above the root count too.
editor.gutters.layout["diagnostics", "spacer", "line-numbers", "spacer", "diff"]The gutter columns: diagnostics, spacer, line-numbers, diff, and code-action-hint.
editor.gutters.line-numbers.min-width3The least width of the numbers, 0 to 32.
editor.inline-blame.auto-fetchfalseA file that opens in a view annotates at once, in a trusted workspace. With false, only space B annotates it.
editor.inline-blame.format"{author}, {time-ago} • {title} • {change}"The text of a blame: {author}, {email}, {date}, {time-ago}, {title}, {body}, {commit} and {change}.
editor.inline-blame.show"never"The lines that show their blame after their end: “never”, “cursor-line”, or “all-lines”.
editor.lsp.auto-document-highlighttrueThe uses of the symbol at the cursor show in ui.highlight after the cursor rests.
editor.lsp.auto-signature-helptruefalse stops the signature help requests that dk makes by itself.
editor.lsp.display-signature-help-docstrueThe signature help popup shows the docs of the signature.
editor.lsp.document-highlight-timeout1000The ms that the cursor rests before the uses of its symbol show.
editor.lsp.goto-reference-include-declarationtruegr lists the declaration too.
editor.lsp.snippetstrueA server that starts gets snippet completions, with tab stops.
editor.search.smart-casetrueA search pattern with no upper case letter ignores case, and false always matches case.
editor.search.wrap-aroundtrueA search of the document past its last match goes on from the other end.
editor.smart-tab.enabletrueTab in Insert mode goes to the next tab stop or past the syntax node after text, as Helix’s smart_tab.
editor.smart-tab.supersede-menufalseTab and S-Tab go past the completion menu to smart-tab.
editor.sticky-context.enabletrueThe first line of each scope that holds the cursor and starts above the view shows at its top.
editor.sticky-context.max-lines3The most rows of scopes at the top of a view: the outer scopes go first, from 1 to 100.
editor.sticky-context.max-symbols10000The most document symbols of a server reply that the scopes take, from 1 to 100000 (A2).
editor.statusline.center[]The elements in the middle of the status line.
editor.statusline.left["mode", "spinner", "file-name", "read-only-indicator", "file-modification-indicator", "spacer", "version-control"]The elements on the left of the status line.
editor.statusline.right["diagnostics", "selections", "register", "position", "total-line-numbers", "file-encoding", "file-type"]The elements on the right of the status line.
editor.statusline.separator"│"The text of the separator element.
editor.statusline.mode.insert"INS"The name of Insert mode.
editor.statusline.mode.normal"NOR"The name of Normal mode.
editor.statusline.mode.select"SEL"The name of Select mode.
keys.normal.x"move-character-right" (example)A key of [keys.normal], [keys.insert], or [keys.select] takes a command name.
plugins.vcs.exec["jj"] (example)The programs that a plugin may run. The shipped vcs plugin has this grant.
plugins.vcs.sha256"<64 hex digits>" (example)The SHA-256 of plugins/<name>.wasm, as sha256sum prints it. The grant applies to that file only with this pin.

Typed commands

CommandArgumentDescription
:annotateshow or hide the change of each line in a column of the gutter
:append-output<command>run the command once, and put its output after each selection
:check-health[all|all-languages|clipboard|languages|<language>]open a [health] document with what dk health prints: what each language has
:close-document, :bcclose the document, but not with unsaved changes
:close-document!, :bc!close the document and drop the unsaved changes
:close-other-tabs, :taboclose every other tab page; the files stay open
:close-tab, :tabc[<N>]close the tab page, or tab page N, and its views; the files stay open
:diff-baseshow the vcs base of the file and the file in a diff session
:diff-diskshow the file on disk and the file in a diff session
:diff-files, :diffs<file1> <file2>show two files side by side, with their changes lined up
:diff-thismark the view, and in a second view compare the two in a diff session
:echo<text>...show the args on the last row, with one space between two
:end-diffend the diff session of the view
:format, :fmtformat the file with the formatter of its language or a language server
:goto-line, :g<line>go to the line; :<line> does the same
:goto-next-document, :bnshow the next open document
:goto-next-tab, :tabn[<N>]go to the next tab page, or to tab page N, from 1
:goto-previous-document, :bpshow the previous open document
:goto-previous-tab, :tabp, :tabN[<N>]go to the tab page before, or N tab pages back
:help[<word>]show the keys and commands
:insert-output<command>run the command once, and put its output before each selection
:move-tab, :tabm[<N>|+<N>|-<N>]move the tab page to after tab page N, 0 for the first and none for the last, or N places
:open, :o, :e<file>...|<directory>open files
:open-empty-document, :nopen an empty [scratch] document in the view
:open-tab, :tabe[<file>]open a tab page after this one, with the file or a new [scratch] document
:pick-jobpick a shell command that runs, to stop it
:pipe, :|<command>run the command for each selection, with its text as stdin, and put the output in its place
:pipe-to<command>run the command for each selection, with its text as stdin, and drop the output
:print-document[<file>]send the selection, or the document, to print-command, or to a PDF file
:put-diff-change, :diffpput each change under a range into the other file of the diff session
:quit, :qclose the view, and at the last view quit, but not with unsaved changes
:quit!, :q!close the view, and at the last view quit and drop the unsaved changes
:quit-all, :qaquit from every view, but not with unsaved changes
:quit-all!, :qa!quit from every view and drop the unsaved changes
:refresh-vcsask the vcs plugin again for the change id and the base of each shown file
:reload, :rl, :e!read the file again and drop the unsaved changes; u gives them back
:reload-all, :rlareload each open file as :reload does
:reload-configread the config, its theme, and the plugins again
:reset-diff-change, :diffgput back the base text of each change under a range
:restart-language-servers[<name>...]stop each named language server of the file, or each one, and start it again
:run-language-server-command[<command> [<json>...]]run a command of a language server of the file, with JSON arguments, or pick one
:run-shell-command, :sh, :!<command>run the command with the shell in the background, and show its output in a popup
:set-document-option, :setl[<key> <value>|<key>=<value>|<key>?]set an [editor] key for this document until the next reload, or show the values
:set-option, :set[<key> <value>|<key>=<value>|<key>?]set an [editor] key of config.toml until the next reload, or show the values
:set-theme<name>draw dk in another theme until the next reload
:show-aboutopen an [about] document with the version, the license, the build and the files of dk
:show-directory, :pwdshow the working directory on the last row
:show-language-serversshow the language servers of the file, their state, and what they answer, in a popup
:show-messagesshow the last messages of the last row
:show-optionsopen a [options] document with every config.toml key at its default
:show-versionshow the version of dk on the last row
:split-view-below, :hs[<file>]split the view: the new view goes below, and shows the file
:split-view-right, :vs[<file>]split the view: the new view goes to the right, and shows the file
:start-language-servers[<name>...]start each named language server of the file that does not run, or each one
:stop-language-servers[<name>...]stop each named language server of the file, or each one, until :start-language-servers
:toggle-option, :toggle<key>flip an [editor] key that is true or false until the next reload, as :set does
:trusttrust the .ductus of this workspace as it is now, and load it
:write, :w[<file>]save the file, or save to another file and take its path
:write!, :w![<file>]save as :w does, but make a missing directory and write over a changed file
:write-all, :waformat and save each changed file, as :w does
:write-all!, :wa!format and save each changed file, as :w! does
:write-quit, :wq, :x[<file>]save, then quit, but not if the save fails
:write-quit!, :wq!, :x![<file>]save as :w! does, then quit as :q! does, but not if the save fails
:write-quit-all, :wqa, :xasave each changed file, then quit, but not if a save fails
:write-quit-all!, :wqa!, :xa!save each changed file as :w! does, then quit as :qa! does, also if a save fails

Default keys

Normal mode

KeyCommandDescription
:open-promptopen the prompt
hmove-character-leftmove left one grapheme
leftmove-character-leftmove left one grapheme
jmove-visual-line-downmove down one line
downmove-visual-line-downmove down one line
kmove-visual-line-upmove up one line
upmove-visual-line-upmove up one line
lmove-character-rightmove right one grapheme
rightmove-character-rightmove right one grapheme
homegoto-line-startgo to the start of the line
endgoto-line-endgo to the last grapheme of the line
tfind-till-characterselect to before the next match of the next key
ffind-next-characterselect to the next match of the next key
Tfind-till-previous-characterselect back to after the match of the next key
Ffind-previous-characterselect back to the match of the next key
rreplacereplace each character of the selection with the next key
Rreplace-with-yankedput the register in place of each selection
yyankyank the selection to the register
ppaste-afterpaste the register after each selection
Ppaste-beforepaste the register before each selection
"pick-registerpick the register of the next command
A-.repeat-last-motionrun the last motion again
.repeat-last-editrun the last change again on each selection
~switch-caseswitch the case of each selection
`switch-to-lowercasemake each selection lower case
A-`switch-to-uppercasemake each selection upper case
wmove-next-word-startselect to the start of the next word
bmove-previous-word-startselect to the start of the previous word
emove-next-word-endselect to the end of the next word
Wmove-next-long-word-startselect to the start of the next long word
Bmove-previous-long-word-startselect back to the start of a long word
Emove-next-long-word-endselect to the end of the next long word
ienter-insert-modeenter Insert mode
venter-select-modeenter Select mode
C-venter-block-modeenter Block mode: a range on each line of a rectangle
ainsert-after-selectioninsert after the selection
Cduplicate-ranges-on-next-lineadd a range on the line below each range
A-Cduplicate-ranges-on-previous-lineadd a range on the line above each range
,keep-primary-rangekeep only the primary range
A-;flip-rangesswap the anchor and the cursor of each selection
A-oexpand-selectionselect the parent syntax node of each selection
A-upexpand-selectionselect the parent syntax node of each selection
A-ishrink-selectiongo back to the selection before A-o, or select the first child node
A-downshrink-selectiongo back to the selection before A-o, or select the first child node
A-Iselect-all-childrenselect each named child node of each selection
A-S-downselect-all-childrenselect each named child node of each selection
A-pselect-previous-siblingselect the previous named sibling node
A-leftselect-previous-siblingselect the previous named sibling node
A-nselect-next-siblingselect the next named sibling node
A-rightselect-next-siblingselect the next named sibling node
A-aselect-all-siblingsselect each named sibling node of each selection
sselect-regexselect each regex match inside the selections
Ssplit-selectionsplit the selections at each regex match
Kkeep-rangeskeep the selections that match a regex
A-Kdrop-rangesremove the selections that match a regex
A-ssplit-selection-on-newlinesplit the selections into their lines
A-minusmerge-rangesmerge the selections into one
A-_merge-consecutive-rangesmerge the selections that touch
;collapse-selectionmake each selection a cursor
A-,drop-primary-rangeremove the primary selection
(rotate-ranges-backwardmake the previous selection primary
)rotate-ranges-forwardmake the next selection primary
A-(rotate-selection-contents-backwardmove the text of each selection to the previous one
A-)rotate-selection-contents-forwardmove the text of each selection to the next one
Xextend-to-line-boundsselect the whole lines of each selection
A-xshrink-to-line-boundsshrink each selection to the whole lines in it
>indentindent the lines of each selection
<unindentunindent the lines of each selection
Jjoin-linesjoin the lines of each selection
A-Jjoin-lines-select-spacesjoin the lines of each selection and select the spaces
&align-rangesalign the selections of each line in columns
_trim-selectiontrim the whitespace of each selection
cchange-selectiondelete the selection, then insert
A-cchange-selection-no-yankdelete the selection with no yank, then insert
ddelete-selectiondelete the selection
A-ddelete-selection-no-yankdelete the selection with no yank
uundoundo the last change
Uredoredo the last undone change
A-ugoto-earlier-revisionmove back to the change made before
A-Ugoto-later-revisionmove on to the change made after
C-ijump-forwardgo to the next jump on the jumplist
tabjump-forwardgo to the next jump on the jumplist
C-ojump-backwardgo back to the jump before on the jumplist
C-ssave-selectionsave the selection to the jumplist
C-w wfocus-next-viewfocus the next view
C-w C-wfocus-next-viewfocus the next view
C-w ssplit-view-belowsplit the view: the new view goes below
C-w C-ssplit-view-belowsplit the view: the new view goes below
C-w vsplit-view-rightsplit the view: the new view goes to the right
C-w C-vsplit-view-rightsplit the view: the new view goes to the right
C-w qclose-viewclose the view
C-w C-qclose-viewclose the view
C-w oclose-other-viewsclose every other view
C-w C-oclose-other-viewsclose every other view
C-w hfocus-view-leftfocus the view to the left
C-w leftfocus-view-leftfocus the view to the left
C-w jfocus-view-downfocus the view below
C-w downfocus-view-downfocus the view below
C-w kfocus-view-upfocus the view above
C-w upfocus-view-upfocus the view above
C-w lfocus-view-rightfocus the view to the right
C-w rightfocus-view-rightfocus the view to the right
C-w Lmove-view-far-rightmove the view to the far right, with the full height
C-w Kmove-view-far-upmove the view to the top, with the full width
C-w Hmove-view-far-leftmove the view to the far left, with the full height
C-w Jmove-view-far-downmove the view to the bottom, with the full width
C-w +grow-view-heightmake the view one row taller, or N rows
C-w minusshrink-view-heightmake the view one row shorter, or N rows
C-w >grow-view-widthmake the view one column wider, or N columns
C-w <shrink-view-widthmake the view one column narrower, or N columns
C-w _set-view-heightmake the view as tall as it can be, or N rows
C-w |set-view-widthmake the view as wide as it can be, or N columns
C-w =equalize-viewsgive the views of each split equal shares
C-ctoggle-commentscomment or uncomment the lines of each selection
space fpick-filepick a file of the workspace
space Fpick-file-in-document-directorypick a file under the directory of the document
space bpick-documentpick an open document
space jpick-jumppick a jump of the jumplists
space spick-symbolpick a symbol of the document
space Spick-workspace-symbolpick a symbol of the workspace
space dpick-diagnosticpick a diagnostic of the document
space Dpick-workspace-diagnosticpick a diagnostic of an open document
space gpick-changed-filepick a file that the working copy changes
space lpick-file-changepick a change of the file, and compare it with its parents
space 'reopen-last-pickeropen the picker that closed last
space upick-revisionpick a revision of the history
space yyank-to-clipboardyank the selection to the system clipboard
space Yyank-primary-range-to-clipboardyank the primary selection to the system clipboard
space ppaste-clipboard-afterpaste the system clipboard after each selection
space Ppaste-clipboard-beforepaste the system clipboard before each selection
space Rreplace-selection-with-clipboardput the system clipboard in place of each selection
space /search-workspacesearch the working directory for a regex
space kshow-hovershow docs for the item under the cursor
space rrename-symbolrename the symbol under the cursor with a language server
space hselect-symbol-referencesselect each use of the symbol under the cursor
space apick-code-actionpick a code action of the language servers
space Kshow-signature-helpshow signature help
space ctoggle-commentscomment or uncomment the lines of each selection
space ?pick-commandpick a command and run it
space !pick-jobpick a shell command that runs, to stop it
space Bblame-lineshow the change of the cursor line
g *search-selectionuse the selection as the search pattern
g +goto-later-revisionmove on to the change made after
g ,goto-newer-revision-positiongo to a newer revision position, or N newer
g .goto-last-revision-positiongo to the revision position of the current revision
g 8show-character-infoshow the code points of the grapheme at the cursor
g ;goto-older-revision-positiongo to an older revision position, or N older
g agoto-last-accessed-documentshow the document that the view showed last
g dgoto-definitiongo to the definition of the symbol
g Dgoto-declarationgo to the declaration of the symbol
g egoto-last-linego to the last line
g fgoto-fileopen the file named at the cursor or by each selection
g Fgoto-file-lineopen the file named at the cursor, at the line after its name
g ggoto-document-startgo to the first line, or to line N with a count
g hgoto-line-startgo to the start of the line
g igoto-implementationgo to the implementation of the symbol
g Iinsert-at-last-insertinsert where Insert mode ended the last time
g jmove-line-downmove down one text line
g Jjoin-lines-no-spacejoin the lines of each selection with no space
g kmove-line-upmove up one text line
g lgoto-line-endgo to the last grapheme of the line
g mgoto-last-modified-documentshow the document that the view left last with a change
g Mgoto-line-middlego to the middle of the line, or to N percent of it
g minusgoto-earlier-revisionmove back to the change made before
g ngoto-next-documentshow the next open document
g pgoto-previous-documentshow the previous open document
g qreflow-selectionfill each paragraph of each selection to text-width
g rgoto-referencego to the references of the symbol
g sgoto-first-non-whitespacego to the first character of the line that is not whitespace
g tgoto-next-tabgo to the next tab page, or to tab page N
C-pagedowngoto-next-tabgo to the next tab page, or to tab page N
g Tgoto-previous-tabgo to the tab page before, or N back
C-pageupgoto-previous-tabgo to the tab page before, or N back
g vselect-last-selectionselect the last selection again
g wgoto-wordgo to a two-character label
g ygoto-type-definitiongo to the type definition of the symbol
g |goto-columngo to grapheme N of the line
] ggoto-next-hunkgo to the next change
[ ggoto-previous-hunkgo to the previous change
] Ggoto-last-hunkgo to the last change
[ Ggoto-first-hunkgo to the first change
] fgoto-next-functiongo to the next function
[ fgoto-previous-functiongo to the previous function
] tgoto-next-classgo to the next type definition
[ tgoto-previous-classgo to the previous type definition
] agoto-next-parametergo to the next parameter
[ agoto-previous-parametergo to the previous parameter
] cgoto-next-commentgo to the next comment
[ cgoto-previous-commentgo to the previous comment
] egoto-next-entrygo to the next pairing
[ egoto-previous-entrygo to the previous pairing
] Tgoto-next-testgo to the next test
[ Tgoto-previous-testgo to the previous test
] pgoto-next-paragraphgo to the next paragraph
[ pgoto-previous-paragraphgo to the previous paragraph
] xgoto-next-xml-elementgo to the next (X)HTML element
[ xgoto-previous-xml-elementgo to the previous (X)HTML element
Ggoto-linego to line N with a count, or to the last line
Hgoto-view-topgo to the top of the view, or to row N with a count
Mgoto-view-centergo to the middle of the view
Lgoto-view-bottomgo to the bottom of the view, or to row N from it
%select-allselect the whole text
=format-selectionformat the selection with a language server
Iinsert-at-line-startinsert at the first character of the line
Ainsert-at-line-endinsert at the end of the line
oopen-line-belowadd a line below each range, then insert
Oopen-line-aboveadd a line above each range, then insert
m mgoto-matching-bracketgo to the bracket that matches the one at the cursor
m sadd-surroundsurround each selection with the pair of the next key
m rreplace-surroundreplace the pair of the next key around each selection
m ddelete-surrounddelete the pair of the next key around each selection
m aselect-text-object-aroundselect around the object of the next key
m iselect-text-object-innerselect inside the object of the next key
xextend-line-belowselect the line, or add the line below
|piperun the command for each selection, with its text as stdin, and put the output in its place
A-|pipe-torun the command for each selection, with its text as stdin, and drop the output
!insert-outputrun the command once, and put its output before each selection
A-!append-outputrun the command once, and put its output after each selection
C-zsuspendstop dk and go back to the shell; fg brings it back
C-aincrementincrement item under cursor
C-xdecrementdecrement item under cursor
C-bscroll-page-upscroll up one page
pageupscroll-page-upscroll up one page
C-fscroll-page-downscroll down one page
pagedownscroll-page-downscroll down one page
C-uscroll-half-page-upscroll and move every range up half a page
C-dscroll-half-page-downscroll and move every range down half a page
z zalign-view-centerput the cursor line on the middle row of the view
z calign-view-centerput the cursor line on the middle row of the view
z talign-view-topput the cursor line on the first row of the view
z balign-view-bottomput the cursor line on the last row of the view
z malign-view-middleput the cursor column in the middle of the view
z kscroll-upscroll the view up a count of lines
z upscroll-upscroll the view up a count of lines
z jscroll-downscroll the view down a count of lines
z downscroll-downscroll the view down a count of lines
z C-bscroll-page-upscroll up one page
z pageupscroll-page-upscroll up one page
z C-fscroll-page-downscroll down one page
z pagedownscroll-page-downscroll down one page
z C-uscroll-half-page-upscroll and move every range up half a page
z backspacescroll-half-page-upscroll and move every range up half a page
z C-dscroll-half-page-downscroll and move every range down half a page
z spacescroll-half-page-downscroll and move every range down half a page
Z zalign-view-centerput the cursor line on the middle row of the view
Z calign-view-centerput the cursor line on the middle row of the view
Z talign-view-topput the cursor line on the first row of the view
Z balign-view-bottomput the cursor line on the last row of the view
Z malign-view-middleput the cursor column in the middle of the view
Z kscroll-upscroll the view up a count of lines
Z upscroll-upscroll the view up a count of lines
Z jscroll-downscroll the view down a count of lines
Z downscroll-downscroll the view down a count of lines
Z C-bscroll-page-upscroll up one page
Z pageupscroll-page-upscroll up one page
Z C-fscroll-page-downscroll down one page
Z pagedownscroll-page-downscroll down one page
Z C-uscroll-half-page-upscroll and move every range up half a page
Z backspacescroll-half-page-upscroll and move every range up half a page
Z C-dscroll-half-page-downscroll and move every range down half a page
Z spacescroll-half-page-downscroll and move every range down half a page
/searchsearch for a regex
z /searchsearch for a regex
Z /searchsearch for a regex
?search-backwardsearch back for a regex
z ?search-backwardsearch back for a regex
Z ?search-backwardsearch back for a regex
nsearch-nextselect the next search match
z nsearch-nextselect the next search match
Z nsearch-nextselect the next search match
Nsearch-previousselect the previous search match
z Nsearch-previousselect the previous search match
Z Nsearch-previousselect the previous search match
*search-selection-detect-word-boundariesuse the selection as the search pattern, with word boundaries
A-*search-selectionuse the selection as the search pattern
C-escroll-downscroll the view down a count of lines
C-yscroll-upscroll the view up a count of lines

Insert mode

KeyCommandDescription
escenter-normal-modereturn to Normal mode
C-scommit-revisionmake an undo step of the text typed so far
C-xshow-completionsask the language servers for completions
C-rinsert-registerpaste a register at each cursor
C-gshow-signature-helpshow signature help
C-jinsert-newlineadd a line break
retinsert-newlineadd a line break
C-wdelete-word-backwarddelete back to the start of the word
A-backspacedelete-word-backwarddelete back to the start of the word
A-ddelete-word-forwarddelete to the end of the word
A-deldelete-word-forwarddelete to the end of the word
C-udelete-to-line-startdelete back to the indent, then to the line start
C-kdelete-to-line-enddelete to the end of the line
C-hdelete-character-backwarddelete the grapheme before the cursor
backspacedelete-character-backwarddelete the grapheme before the cursor
S-backspacedelete-character-backwarddelete the grapheme before the cursor
C-ddelete-character-forwarddelete the grapheme at the cursor
deldelete-character-forwarddelete the grapheme at the cursor
upmove-visual-line-upmove up one line
downmove-visual-line-downmove down one line
leftmove-character-leftmove left one grapheme
rightmove-character-rightmove right one grapheme
pageupscroll-page-upscroll up one page
pagedownscroll-page-downscroll down one page
homegoto-line-startgo to the start of the line
endgoto-line-endinggo to the line ending
tabsmart-tabselect the next tab stop of the snippet
S-tabinsert-tab-characterinsert a tab, or spaces to the next indent column
any textinsert-texttype it at the cursor

Select mode

KeyCommandDescription
:open-promptopen the prompt
hextend-character-leftextend left one grapheme
leftextend-character-leftextend left one grapheme
jextend-visual-line-downextend down one line
downextend-visual-line-downextend down one line
kextend-visual-line-upextend up one line
upextend-visual-line-upextend up one line
lextend-character-rightextend right one grapheme
rightextend-character-rightextend right one grapheme
textend-till-characterextend to before the next match of the next key
fextend-next-characterextend to the next match of the next key
Textend-till-previous-characterextend back to after the match of the next key
Fextend-previous-characterextend back to the match of the next key
homeextend-to-line-startextend to the start of the line
endextend-to-line-endextend to the end of the line
rreplacereplace each character of the selection with the next key
Rreplace-with-yankedput the register in place of each selection
yyankyank the selection to the register
ppaste-afterpaste the register after each selection
Ppaste-beforepaste the register before each selection
"pick-registerpick the register of the next command
A-.repeat-last-motionrun the last motion again
.repeat-last-editrun the last change again on each selection
~switch-caseswitch the case of each selection
`switch-to-lowercasemake each selection lower case
A-`switch-to-uppercasemake each selection upper case
wextend-next-word-startextend to the start of the next word
bextend-previous-word-startextend to the start of the previous word
eextend-next-word-endextend to the end of the next word
Wextend-next-long-word-startextend to the start of the next long word
Bextend-previous-long-word-startextend back to the start of a long word
Eextend-next-long-word-endextend to the end of the next long word
ienter-insert-modeenter Insert mode
escexit-select-modereturn to Normal mode
venter-normal-modereturn to Normal mode
C-venter-block-modeenter Block mode: a range on each line of a rectangle
ainsert-after-selectioninsert after the selection
Cduplicate-ranges-on-next-lineadd a range on the line below each range
A-Cduplicate-ranges-on-previous-lineadd a range on the line above each range
,keep-primary-rangekeep only the primary range
A-;flip-rangesswap the anchor and the cursor of each selection
A-oexpand-selectionselect the parent syntax node of each selection
A-upexpand-selectionselect the parent syntax node of each selection
A-ishrink-selectiongo back to the selection before A-o, or select the first child node
A-downshrink-selectiongo back to the selection before A-o, or select the first child node
A-Iselect-all-childrenselect each named child node of each selection
A-S-downselect-all-childrenselect each named child node of each selection
A-pselect-previous-siblingselect the previous named sibling node
A-leftselect-previous-siblingselect the previous named sibling node
A-nselect-next-siblingselect the next named sibling node
A-rightselect-next-siblingselect the next named sibling node
A-aselect-all-siblingsselect each named sibling node of each selection
sselect-regexselect each regex match inside the selections
Ssplit-selectionsplit the selections at each regex match
Kkeep-rangeskeep the selections that match a regex
A-Kdrop-rangesremove the selections that match a regex
A-ssplit-selection-on-newlinesplit the selections into their lines
A-minusmerge-rangesmerge the selections into one
A-_merge-consecutive-rangesmerge the selections that touch
;collapse-selectionmake each selection a cursor
A-,drop-primary-rangeremove the primary selection
(rotate-ranges-backwardmake the previous selection primary
)rotate-ranges-forwardmake the next selection primary
A-(rotate-selection-contents-backwardmove the text of each selection to the previous one
A-)rotate-selection-contents-forwardmove the text of each selection to the next one
Xextend-to-line-boundsselect the whole lines of each selection
A-xshrink-to-line-boundsshrink each selection to the whole lines in it
>indentindent the lines of each selection
<unindentunindent the lines of each selection
Jjoin-linesjoin the lines of each selection
A-Jjoin-lines-select-spacesjoin the lines of each selection and select the spaces
&align-rangesalign the selections of each line in columns
_trim-selectiontrim the whitespace of each selection
cchange-selectiondelete the selection, then insert
A-cchange-selection-no-yankdelete the selection with no yank, then insert
ddelete-selectiondelete the selection
A-ddelete-selection-no-yankdelete the selection with no yank
uundoundo the last change
Uredoredo the last undone change
C-ijump-forwardgo to the next jump on the jumplist
tabjump-forwardgo to the next jump on the jumplist
C-ojump-backwardgo back to the jump before on the jumplist
C-ssave-selectionsave the selection to the jumplist
C-w wfocus-next-viewfocus the next view
C-w C-wfocus-next-viewfocus the next view
C-w ssplit-view-belowsplit the view: the new view goes below
C-w C-ssplit-view-belowsplit the view: the new view goes below
C-w vsplit-view-rightsplit the view: the new view goes to the right
C-w C-vsplit-view-rightsplit the view: the new view goes to the right
C-w qclose-viewclose the view
C-w C-qclose-viewclose the view
C-w oclose-other-viewsclose every other view
C-w C-oclose-other-viewsclose every other view
C-w hfocus-view-leftfocus the view to the left
C-w leftfocus-view-leftfocus the view to the left
C-w jfocus-view-downfocus the view below
C-w downfocus-view-downfocus the view below
C-w kfocus-view-upfocus the view above
C-w upfocus-view-upfocus the view above
C-w lfocus-view-rightfocus the view to the right
C-w rightfocus-view-rightfocus the view to the right
C-w Lmove-view-far-rightmove the view to the far right, with the full height
C-w Kmove-view-far-upmove the view to the top, with the full width
C-w Hmove-view-far-leftmove the view to the far left, with the full height
C-w Jmove-view-far-downmove the view to the bottom, with the full width
C-w +grow-view-heightmake the view one row taller, or N rows
C-w minusshrink-view-heightmake the view one row shorter, or N rows
C-w >grow-view-widthmake the view one column wider, or N columns
C-w <shrink-view-widthmake the view one column narrower, or N columns
C-w _set-view-heightmake the view as tall as it can be, or N rows
C-w |set-view-widthmake the view as wide as it can be, or N columns
C-w =equalize-viewsgive the views of each split equal shares
C-ctoggle-commentscomment or uncomment the lines of each selection
space fpick-filepick a file of the workspace
space Fpick-file-in-document-directorypick a file under the directory of the document
space bpick-documentpick an open document
space jpick-jumppick a jump of the jumplists
space spick-symbolpick a symbol of the document
space Spick-workspace-symbolpick a symbol of the workspace
space dpick-diagnosticpick a diagnostic of the document
space Dpick-workspace-diagnosticpick a diagnostic of an open document
space gpick-changed-filepick a file that the working copy changes
space lpick-file-changepick a change of the file, and compare it with its parents
space 'reopen-last-pickeropen the picker that closed last
space upick-revisionpick a revision of the history
space yyank-to-clipboardyank the selection to the system clipboard
space Yyank-primary-range-to-clipboardyank the primary selection to the system clipboard
space ppaste-clipboard-afterpaste the system clipboard after each selection
space Ppaste-clipboard-beforepaste the system clipboard before each selection
space Rreplace-selection-with-clipboardput the system clipboard in place of each selection
space /search-workspacesearch the working directory for a regex
space kshow-hovershow docs for the item under the cursor
space rrename-symbolrename the symbol under the cursor with a language server
space hselect-symbol-referencesselect each use of the symbol under the cursor
space apick-code-actionpick a code action of the language servers
space Kshow-signature-helpshow signature help
space ctoggle-commentscomment or uncomment the lines of each selection
space ?pick-commandpick a command and run it
space !pick-jobpick a shell command that runs, to stop it
space Bblame-lineshow the change of the cursor line
g *search-selectionuse the selection as the search pattern
g ,goto-newer-revision-positiongo to a newer revision position, or N newer
g .goto-last-revision-positiongo to the revision position of the current revision
g 8show-character-infoshow the code points of the grapheme at the cursor
g ;goto-older-revision-positiongo to an older revision position, or N older
g agoto-last-accessed-documentshow the document that the view showed last
g dgoto-definitiongo to the definition of the symbol
g Dgoto-declarationgo to the declaration of the symbol
g eextend-to-last-lineextend to the last line
g fgoto-fileopen the file named at the cursor or by each selection
g Fgoto-file-lineopen the file named at the cursor, at the line after its name
g gextend-to-document-startextend to the first line, or to line N with a count
g hextend-to-line-startextend to the start of the line
g igoto-implementationgo to the implementation of the symbol
g Iinsert-at-last-insertinsert where Insert mode ended the last time
g jextend-line-downextend down one text line
g Jjoin-lines-no-spacejoin the lines of each selection with no space
g kextend-line-upextend up one text line
g lextend-to-line-endextend to the end of the line
g mgoto-last-modified-documentshow the document that the view left last with a change
g Mextend-to-line-middleextend to the middle of the line, or to N percent of it
g ngoto-next-documentshow the next open document
g pgoto-previous-documentshow the previous open document
g qreflow-selectionfill each paragraph of each selection to text-width
g rgoto-referencego to the references of the symbol
g sextend-to-first-non-whitespaceextend to the first character of the line that is not whitespace
g tgoto-next-tabgo to the next tab page, or to tab page N
C-pagedowngoto-next-tabgo to the next tab page, or to tab page N
g Tgoto-previous-tabgo to the tab page before, or N back
C-pageupgoto-previous-tabgo to the tab page before, or N back
g vselect-last-selectionselect the last selection again
g wextend-to-wordextend to a two-character label
g ygoto-type-definitiongo to the type definition of the symbol
g |extend-to-columnextend to grapheme N of the line
] ggoto-next-hunkgo to the next change
[ ggoto-previous-hunkgo to the previous change
] Ggoto-last-hunkgo to the last change
[ Ggoto-first-hunkgo to the first change
] fgoto-next-functiongo to the next function
[ fgoto-previous-functiongo to the previous function
] tgoto-next-classgo to the next type definition
[ tgoto-previous-classgo to the previous type definition
] agoto-next-parametergo to the next parameter
[ agoto-previous-parametergo to the previous parameter
] cgoto-next-commentgo to the next comment
[ cgoto-previous-commentgo to the previous comment
] egoto-next-entrygo to the next pairing
[ egoto-previous-entrygo to the previous pairing
] Tgoto-next-testgo to the next test
[ Tgoto-previous-testgo to the previous test
] pgoto-next-paragraphgo to the next paragraph
[ pgoto-previous-paragraphgo to the previous paragraph
] xgoto-next-xml-elementgo to the next (X)HTML element
[ xgoto-previous-xml-elementgo to the previous (X)HTML element
Ggoto-linego to line N with a count, or to the last line
Hgoto-view-topgo to the top of the view, or to row N with a count
Mgoto-view-centergo to the middle of the view
Lgoto-view-bottomgo to the bottom of the view, or to row N from it
%select-allselect the whole text
=format-selectionformat the selection with a language server
Iinsert-at-line-startinsert at the first character of the line
Ainsert-at-line-endinsert at the end of the line
oopen-line-belowadd a line below each range, then insert
Oopen-line-aboveadd a line above each range, then insert
m mgoto-matching-bracketgo to the bracket that matches the one at the cursor
m sadd-surroundsurround each selection with the pair of the next key
m rreplace-surroundreplace the pair of the next key around each selection
m ddelete-surrounddelete the pair of the next key around each selection
m aselect-text-object-aroundselect around the object of the next key
m iselect-text-object-innerselect inside the object of the next key
xextend-line-belowselect the line, or add the line below
|piperun the command for each selection, with its text as stdin, and put the output in its place
A-|pipe-torun the command for each selection, with its text as stdin, and drop the output
!insert-outputrun the command once, and put its output before each selection
A-!append-outputrun the command once, and put its output after each selection
C-zsuspendstop dk and go back to the shell; fg brings it back
C-aincrementincrement item under cursor
C-xdecrementdecrement item under cursor
C-bscroll-page-upscroll up one page
pageupscroll-page-upscroll up one page
C-fscroll-page-downscroll down one page
pagedownscroll-page-downscroll down one page
C-uscroll-half-page-upscroll and move every range up half a page
C-dscroll-half-page-downscroll and move every range down half a page
z zalign-view-centerput the cursor line on the middle row of the view
z calign-view-centerput the cursor line on the middle row of the view
z talign-view-topput the cursor line on the first row of the view
z balign-view-bottomput the cursor line on the last row of the view
z malign-view-middleput the cursor column in the middle of the view
z kscroll-upscroll the view up a count of lines
z upscroll-upscroll the view up a count of lines
z jscroll-downscroll the view down a count of lines
z downscroll-downscroll the view down a count of lines
z C-bscroll-page-upscroll up one page
z pageupscroll-page-upscroll up one page
z C-fscroll-page-downscroll down one page
z pagedownscroll-page-downscroll down one page
z C-uscroll-half-page-upscroll and move every range up half a page
z backspacescroll-half-page-upscroll and move every range up half a page
z C-dscroll-half-page-downscroll and move every range down half a page
z spacescroll-half-page-downscroll and move every range down half a page
Z zalign-view-centerput the cursor line on the middle row of the view
Z calign-view-centerput the cursor line on the middle row of the view
Z talign-view-topput the cursor line on the first row of the view
Z balign-view-bottomput the cursor line on the last row of the view
Z malign-view-middleput the cursor column in the middle of the view
Z kscroll-upscroll the view up a count of lines
Z upscroll-upscroll the view up a count of lines
Z jscroll-downscroll the view down a count of lines
Z downscroll-downscroll the view down a count of lines
Z C-bscroll-page-upscroll up one page
Z pageupscroll-page-upscroll up one page
Z C-fscroll-page-downscroll down one page
Z pagedownscroll-page-downscroll down one page
Z C-uscroll-half-page-upscroll and move every range up half a page
Z backspacescroll-half-page-upscroll and move every range up half a page
Z C-dscroll-half-page-downscroll and move every range down half a page
Z spacescroll-half-page-downscroll and move every range down half a page
/searchsearch for a regex
z /searchsearch for a regex
Z /searchsearch for a regex
?search-backwardsearch back for a regex
z ?search-backwardsearch back for a regex
Z ?search-backwardsearch back for a regex
z nsearch-nextselect the next search match
Z nsearch-nextselect the next search match
z Nsearch-previousselect the previous search match
Z Nsearch-previousselect the previous search match
nextend-search-nextadd the next search match as a selection
Nextend-search-previousadd the previous search match as a selection
*search-selection-detect-word-boundariesuse the selection as the search pattern, with word boundaries
A-*search-selectionuse the selection as the search pattern
C-escroll-downscroll the view down a count of lines
C-yscroll-upscroll the view up a count of lines

Block mode

KeyCommandDescription
:open-promptopen the prompt
C-venter-normal-modereturn to Normal mode
$extend-to-line-endextend to the end of the line
oflip-block-cornersin Block mode, swap the corners: go to the other corner
Oflip-block-columnsin Block mode, swap the columns of the corners: go to the other corner on the line

Command-line editing keys

The keys of the : prompt. [keys] does not bind them.

KeyDescription
retrun the line
up, C-pshow an older command line
down, C-nshow a newer command line
escclose the prompt
left, C-bmove left one grapheme
right, C-fmove right one grapheme
home, C-amove to the start of the line
end, C-emove to the end of the line
backspace, C-hdelete the grapheme before the cursor, or close an empty line
del, C-ddelete the grapheme under the cursor
C-udelete to the start of the line
C-kdelete to the end of the line
C-w, A-backspacedelete the word before the cursor
tabcomplete the line, or select the next match
S-tabselect the previous match
C-rinsert the first value of a register
any texttype it at the cursor

Key commands

A key of [keys] in config.toml binds these names.

NameDescription
add-surroundsurround each selection with the pair of the next key
align-rangesalign the selections of each line in columns
align-view-bottomput the cursor line on the last row of the view
align-view-centerput the cursor line on the middle row of the view
align-view-middleput the cursor column in the middle of the view
align-view-topput the cursor line on the first row of the view
annotateshow or hide the change of each line in a column of the gutter
append-outputrun the command once, and put its output after each selection
blame-lineshow the change of the cursor line
change-selectiondelete the selection, then insert
change-selection-no-yankdelete the selection with no yank, then insert
close-other-viewsclose every other view
close-viewclose the view
collapse-selectionmake each selection a cursor
commit-revisionmake an undo step of the text typed so far
decrementdecrement item under cursor
delete-character-backwarddelete the grapheme before the cursor
delete-character-forwarddelete the grapheme at the cursor
delete-selectiondelete the selection
delete-selection-no-yankdelete the selection with no yank
delete-surrounddelete the pair of the next key around each selection
delete-to-line-enddelete to the end of the line
delete-to-line-startdelete back to the indent, then to the line start
delete-word-backwarddelete back to the start of the word
delete-word-forwarddelete to the end of the word
diff-baseshow the vcs base of the file and the file in a diff session
drop-primary-rangeremove the primary selection
drop-rangesremove the selections that match a regex
duplicate-ranges-on-next-lineadd a range on the line below each range
duplicate-ranges-on-previous-lineadd a range on the line above each range
ensure-ranges-forwardmake each selection face forward
enter-block-modeenter Block mode: a range on each line of a rectangle
enter-insert-modeenter Insert mode
enter-normal-modereturn to Normal mode
enter-select-modeenter Select mode
equalize-viewsgive the views of each split equal shares
exit-select-modereturn to Normal mode
expand-selectionselect the parent syntax node of each selection
extend-character-leftextend left one grapheme
extend-character-rightextend right one grapheme
extend-line-belowselect the line, or add the line below
extend-line-downextend down one text line
extend-line-upextend up one text line
extend-next-characterextend to the next match of the next key
extend-next-long-word-endextend to the end of the next long word
extend-next-long-word-startextend to the start of the next long word
extend-next-word-endextend to the end of the next word
extend-next-word-startextend to the start of the next word
extend-previous-characterextend back to the match of the next key
extend-previous-long-word-startextend back to the start of a long word
extend-previous-word-startextend to the start of the previous word
extend-search-nextadd the next search match as a selection
extend-search-previousadd the previous search match as a selection
extend-till-characterextend to before the next match of the next key
extend-till-previous-characterextend back to after the match of the next key
extend-to-columnextend to grapheme N of the line
extend-to-document-startextend to the first line, or to line N with a count
extend-to-first-non-whitespaceextend to the first character of the line that is not whitespace
extend-to-last-lineextend to the last line
extend-to-line-boundsselect the whole lines of each selection
extend-to-line-endextend to the end of the line
extend-to-line-middleextend to the middle of the line, or to N percent of it
extend-to-line-startextend to the start of the line
extend-to-wordextend to a two-character label
extend-visual-line-downextend down one line
extend-visual-line-upextend up one line
find-next-characterselect to the next match of the next key
find-previous-characterselect back to the match of the next key
find-till-characterselect to before the next match of the next key
find-till-previous-characterselect back to after the match of the next key
flip-block-columnsin Block mode, swap the columns of the corners: go to the other corner on the line
flip-block-cornersin Block mode, swap the corners: go to the other corner
flip-rangesswap the anchor and the cursor of each selection
focus-next-viewfocus the next view
focus-view-downfocus the view below
focus-view-leftfocus the view to the left
focus-view-rightfocus the view to the right
focus-view-upfocus the view above
format-selectionformat the selection with a language server
goto-columngo to grapheme N of the line
goto-declarationgo to the declaration of the symbol
goto-definitiongo to the definition of the symbol
goto-document-startgo to the first line, or to line N with a count
goto-earlier-revisionmove back to the change made before
goto-fileopen the file named at the cursor or by each selection
goto-file-lineopen the file named at the cursor, at the line after its name
goto-first-hunkgo to the first change
goto-first-non-whitespacego to the first character of the line that is not whitespace
goto-implementationgo to the implementation of the symbol
goto-last-accessed-documentshow the document that the view showed last
goto-last-hunkgo to the last change
goto-last-linego to the last line
goto-last-modified-documentshow the document that the view left last with a change
goto-last-revision-positiongo to the revision position of the current revision
goto-later-revisionmove on to the change made after
goto-linego to line N with a count, or to the last line
goto-line-endgo to the last grapheme of the line
goto-line-endinggo to the line ending
goto-line-middlego to the middle of the line, or to N percent of it
goto-line-startgo to the start of the line
goto-matching-bracketgo to the bracket that matches the one at the cursor
goto-newer-revision-positiongo to a newer revision position, or N newer
goto-next-classgo to the next type definition
goto-next-commentgo to the next comment
goto-next-documentshow the next open document
goto-next-entrygo to the next pairing
goto-next-functiongo to the next function
goto-next-hunkgo to the next change
goto-next-paragraphgo to the next paragraph
goto-next-parametergo to the next parameter
goto-next-tabgo to the next tab page, or to tab page N
goto-next-tab-stopselect the next tab stop of the snippet
goto-next-testgo to the next test
goto-next-xml-elementgo to the next (X)HTML element
goto-older-revision-positiongo to an older revision position, or N older
goto-previous-classgo to the previous type definition
goto-previous-commentgo to the previous comment
goto-previous-documentshow the previous open document
goto-previous-entrygo to the previous pairing
goto-previous-functiongo to the previous function
goto-previous-hunkgo to the previous change
goto-previous-paragraphgo to the previous paragraph
goto-previous-parametergo to the previous parameter
goto-previous-tabgo to the tab page before, or N back
goto-previous-tab-stopselect the tab stop of the snippet before
goto-previous-testgo to the previous test
goto-previous-xml-elementgo to the previous (X)HTML element
goto-referencego to the references of the symbol
goto-type-definitiongo to the type definition of the symbol
goto-view-bottomgo to the bottom of the view, or to row N from it
goto-view-centergo to the middle of the view
goto-view-topgo to the top of the view, or to row N with a count
goto-wordgo to a two-character label
grow-view-heightmake the view one row taller, or N rows
grow-view-widthmake the view one column wider, or N columns
incrementincrement item under cursor
indentindent the lines of each selection
insert-after-selectioninsert after the selection
insert-at-last-insertinsert where Insert mode ended the last time
insert-at-line-endinsert at the end of the line
insert-at-line-startinsert at the first character of the line
insert-newlineadd a line break
insert-outputrun the command once, and put its output before each selection
insert-registerpaste a register at each cursor
insert-tab-characterinsert a tab, or spaces to the next indent column
join-linesjoin the lines of each selection
join-lines-no-spacejoin the lines of each selection with no space
join-lines-select-spacesjoin the lines of each selection and select the spaces
jump-backwardgo back to the jump before on the jumplist
jump-forwardgo to the next jump on the jumplist
keep-primary-rangekeep only the primary range
keep-rangeskeep the selections that match a regex
merge-consecutive-rangesmerge the selections that touch
merge-rangesmerge the selections into one
move-character-leftmove left one grapheme
move-character-rightmove right one grapheme
move-line-downmove down one text line
move-line-upmove up one text line
move-next-long-word-endselect to the end of the next long word
move-next-long-word-startselect to the start of the next long word
move-next-word-endselect to the end of the next word
move-next-word-startselect to the start of the next word
move-previous-long-word-startselect back to the start of a long word
move-previous-word-startselect to the start of the previous word
move-view-far-downmove the view to the bottom, with the full width
move-view-far-leftmove the view to the far left, with the full height
move-view-far-rightmove the view to the far right, with the full height
move-view-far-upmove the view to the top, with the full width
move-visual-line-downmove down one line
move-visual-line-upmove up one line
open-line-aboveadd a line above each range, then insert
open-line-belowadd a line below each range, then insert
open-promptopen the prompt
paste-afterpaste the register after each selection
paste-beforepaste the register before each selection
paste-clipboard-afterpaste the system clipboard after each selection
paste-clipboard-beforepaste the system clipboard before each selection
pick-changed-filepick a file that the working copy changes
pick-code-actionpick a code action of the language servers
pick-commandpick a command and run it
pick-diagnosticpick a diagnostic of the document
pick-documentpick an open document
pick-filepick a file of the workspace
pick-file-changepick a change of the file, and compare it with its parents
pick-file-in-document-directorypick a file under the directory of the document
pick-jobpick a shell command that runs, to stop it
pick-jumppick a jump of the jumplists
pick-registerpick the register of the next command
pick-revisionpick a revision of the history
pick-symbolpick a symbol of the document
pick-workspace-diagnosticpick a diagnostic of an open document
pick-workspace-symbolpick a symbol of the workspace
piperun the command for each selection, with its text as stdin, and put the output in its place
pipe-torun the command for each selection, with its text as stdin, and drop the output
redoredo the last undone change
reflow-selectionfill each paragraph of each selection to text-width
refresh-vcsask the vcs plugin again for the change id and the base of each shown file
rename-symbolrename the symbol under the cursor with a language server
reopen-last-pickeropen the picker that closed last
repeat-last-editrun the last change again on each selection
repeat-last-motionrun the last motion again
replacereplace each character of the selection with the next key
replace-selection-with-clipboardput the system clipboard in place of each selection
replace-surroundreplace the pair of the next key around each selection
replace-with-yankedput the register in place of each selection
rotate-ranges-backwardmake the previous selection primary
rotate-ranges-forwardmake the next selection primary
rotate-selection-contents-backwardmove the text of each selection to the previous one
rotate-selection-contents-forwardmove the text of each selection to the next one
save-selectionsave the selection to the jumplist
scroll-downscroll the view down a count of lines
scroll-half-page-downscroll and move every range down half a page
scroll-half-page-upscroll and move every range up half a page
scroll-page-downscroll down one page
scroll-page-upscroll up one page
scroll-upscroll the view up a count of lines
searchsearch for a regex
search-backwardsearch back for a regex
search-nextselect the next search match
search-previousselect the previous search match
search-selectionuse the selection as the search pattern
search-selection-detect-word-boundariesuse the selection as the search pattern, with word boundaries
search-workspacesearch the working directory for a regex
select-allselect the whole text
select-all-childrenselect each named child node of each selection
select-all-siblingsselect each named sibling node of each selection
select-last-selectionselect the last selection again
select-next-siblingselect the next named sibling node
select-previous-siblingselect the previous named sibling node
select-regexselect each regex match inside the selections
select-symbol-referencesselect each use of the symbol under the cursor
select-text-object-aroundselect around the object of the next key
select-text-object-innerselect inside the object of the next key
set-view-heightmake the view as tall as it can be, or N rows
set-view-widthmake the view as wide as it can be, or N columns
show-character-infoshow the code points of the grapheme at the cursor
show-completionsask the language servers for completions
show-hovershow docs for the item under the cursor
show-signature-helpshow signature help
shrink-selectiongo back to the selection before A-o, or select the first child node
shrink-to-line-boundsshrink each selection to the whole lines in it
shrink-view-heightmake the view one row shorter, or N rows
shrink-view-widthmake the view one column narrower, or N columns
smart-tabselect the next tab stop of the snippet
split-selectionsplit the selections at each regex match
split-selection-on-newlinesplit the selections into their lines
split-view-belowsplit the view: the new view goes below
split-view-rightsplit the view: the new view goes to the right
suspendstop dk and go back to the shell; fg brings it back
switch-caseswitch the case of each selection
switch-to-lowercasemake each selection lower case
switch-to-uppercasemake each selection upper case
toggle-commentscomment or uncomment the lines of each selection
trim-selectiontrim the whitespace of each selection
undoundo the last change
unindentunindent the lines of each selection
yankyank the selection to the register
yank-primary-range-to-clipboardyank the primary selection to the system clipboard
yank-to-clipboardyank the selection to the system clipboard