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, and with
one directory it opens [scratch] and the file picker at that directory.
--tabs opens each file in a tab page of its own. --split-right and --split-below
open each file in a view to the right of the one before, or below it.
To open a file whose name starts with a dash or is the name of a command, put
-- or ./ before it, as in dk ./trust.
dk sets the title of the terminal window to "dk: " and the file of the focused
document, with [+] after it for unsaved changes. When dk ends, it puts the old
title back, or empties it in a terminal that cannot. [editor] title = false
leaves the title alone.
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, even without --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
| Key | Default | Description |
|---|---|---|
theme | "nord" | The theme dk draws in: a name, or { light = “…”, dark = “…” }. |
editor.auto-completion | true | Completion starts on its own while you type. |
editor.auto-format | true | :w formats the file before it saves, in a language that auto-formats. |
editor.auto-info | true | A box shows the keys that can follow a pending key. |
editor.auto-pairs | true | Typing a bracket inserts its pair: true, false, or a table such as { ‘(’ = ‘)’ }. |
editor.auto-reload | true | When another program changes a file, dk reloads it, unless the document has unsaved changes. A .ductus cannot set it. |
editor.clipboard-provider | "tmux" (example) | How the + and * registers reach the clipboard: a provider name, or { custom = { yank = …, paste = … } }. By default dk detects one at first use. A .ductus cannot set it. |
editor.color-modes | true | The mode element of the focused view and the mode label of a picker draw in ui.statusline.normal, .insert, or .select. |
editor.completion-replace | false | A completion item replaces the word after the cursor too. |
editor.completion-timeout | 250 | How many milliseconds dk waits after the last word character you type before it asks for completions. |
editor.completion-trigger-len | 2 | How many word characters you type before dk asks for completions, 0 to 255. |
editor.date-format | "iso" | How dk draws a date: “iso” as 2026-11-10, “dmy” as 10/11/2026, “mdy” as 11/10/2026, or “locale” for the form of LC_ALL, LC_TIME or LANG, and iso when those name none. |
editor.default-yank-register | "\"" | The register that y, d, c, p, P and R use 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" | How dk picks the indent of a new line: simple, tree-sitter, or hybrid. |
editor.jump-label-alphabet | "abcdefghijklmnopqrstuvwxyz" | The characters of the gw labels: at least two, each used once and one column wide. |
editor.line-number | "absolute" | “absolute”, or “relative” to the line of the cursor. |
editor.listing-split | false | true opens a listing, such as the one of :help or :show-about, in a new view above the focused view. false opens it in the focused view, and :bc brings back the document that it replaced. |
editor.middle-click-paste | true | A mouse selection yanks to mouse-yank-register, and a middle click pastes it. |
editor.mouse | true | false 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-size | 80 | How much of the width and the height a picker takes, in percent, 10 to 100. |
editor.picker-start-mode | "normal" | “normal”, or “insert” to type into the query of a new picker right away. |
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-insert | true | The selected completion item shows in the text. |
editor.print-command | ["enscript"] | The program and first arguments 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-brackets | true | Brackets draw in the rainbow colors of the theme, by their depth. The rainbow-brackets of a language overrides it. |
editor.restore-cursor | true | A file opens where its cursor was when it last closed. false opens it at the start. Only this file sets it. |
editor.restore-cursor-files | 100 | How many files dk remembers a cursor place for, 1 to 10000. Only this file sets it. |
editor.rulers | [] | The text columns, counted from 1, that show a ruler in ui.virtual.ruler. The rulers of a language override them. |
editor.scrolloff | 5 | The rows and columns that a view keeps between the cursor and its edges, 0 to 1000. |
editor.shell | ["sh", "-c"] | The program and first arguments that run a shell command, with the command line last. Only this file sets it. |
editor.splash | true | dk with no file shows its name, version and key hints over the empty document until the first key. |
editor.tabline | "multiple" | When the top row shows the tab pages: “multiple” with more than one, “always”, or “never”. |
editor.text-width | 80 | The width in display columns that g q fills each line to, 1 or more. |
editor.time-format | "24h" | How dk draws a time of day: “24h” as 15:04, “12h” as 3:04 PM, or “locale” for the clock of LC_ALL, LC_TIME or LANG, and 24h when those name none. |
editor.title | true | dk sets the title of the terminal window to “dk: “ and the file of the focused document. It puts the old title back when it ends, or empties it in a terminal that cannot restore it. |
editor.undofile-exclude | ["*.env", "**/.git/COMMIT_EDITMSG"] | Globs of files that get no undofile. A list of your own replaces these. |
editor.url-opener | ["xdg-open"] | The program and first arguments that open a URL for g f, with the URL last. Only this file sets it. |
editor.file-picker.deduplicate-links | true | space f and space / skip each link that resolves inside the root. |
editor.file-picker.follow-symlinks | true | space f and space / go into a linked directory, and into each link target once. |
editor.file-picker.git-exclude | true | space f and space / skip what .git/info/exclude names, in a repo. |
editor.file-picker.git-global | true | space f and space / skip what the core.excludesFile of git names, in a repo. |
editor.file-picker.git-ignore | true | space f and space / skip what .gitignore names, in a repo. |
editor.file-picker.hidden | true | space f and space / skip each name that starts with a dot. |
editor.file-picker.ignore | true | space f and space / skip what .ignore names. |
editor.file-picker.max-depth | 1 (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.parents | true | The 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-width | 3 | The minimum width of the line numbers, 0 to 32. |
editor.inline-blame.auto-fetch | false | A 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-short}, {time-ago} • {title} • {change}" | The text of a blame: {author}, {author-short}, {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-highlight | true | When the cursor rests, the uses of the symbol under it show in ui.highlight. |
editor.lsp.auto-signature-help | true | false stops the signature help requests that dk makes by itself. |
editor.lsp.display-signature-help-docs | true | The signature help popup shows the docs of the signature. |
editor.lsp.document-highlight-timeout | 1000 | How many milliseconds the cursor rests before the uses of its symbol show. |
editor.lsp.goto-reference-include-declaration | true | gr lists the declaration too. |
editor.lsp.snippets | true | A server that starts gets snippet completions, with tab stops. |
editor.search.highlight | true | Every match of the search pattern is highlighted in each view, in ui.highlight.search or ui.highlight. |
editor.search.smart-case | true | A search pattern with no upper case letter ignores case, and false always matches case. |
editor.search.wrap-around | true | A search that passes the last match goes on from the other end of the document. |
editor.smart-tab.enable | true | Tab in Insert mode goes to the next tab stop or past the syntax node after text. |
editor.smart-tab.supersede-menu | false | Tab and S-Tab go past the completion menu to smart-tab. |
editor.soft-wrap.enable | false | A line that is wider than a view draws on more rows, and breaks between words. |
editor.soft-wrap.max-indent-retain | 40 | With enable, a row after the first keeps the indent of its line when the indent is at most this many cells and at most two fifths of the width of the view. Otherwise it has none. |
editor.soft-wrap.max-wrap | 20 | With enable, a word that does not fit its row moves whole to the next row when at most this many cells of it fit, and otherwise breaks at the edge. It is at most a quarter of the width of the view. |
editor.soft-wrap.wrap-at-text-width | false | With enable, a row breaks at text-width when text-width is less than the width of the view. |
editor.soft-wrap.wrap-indicator | "↪ " | With enable, the text that a row after the first starts with, in ui.virtual.wrap. A control character shows as a glyph. At most 8 cells of it show, and never more than a quarter of the width of the view after the gutter (A2, A5). |
editor.sticky-context.enable | true | For each scope that contains the cursor and starts above the view, its first line shows at the top of the view. |
editor.sticky-context.max-lines | 3 | The maximum rows of scopes at the top of a view, from 1 to 100. The outer scopes go first. |
editor.sticky-context.max-symbols | 10000 | The maximum document symbols that the scopes take from a server reply, 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
| Command | Argument | Description |
|---|---|---|
:annotate | show 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 |
:change-current-directory, :cd | [<directory>] | change the working directory to the directory, or to home with none, and show it on the last row |
:check-health | [all|all-languages|clipboard|languages|<language>] | open a [health] document with what dk health prints: what each language has |
:close-document, :bc | close the document, but not with unsaved changes | |
:close-document!, :bc! | close the document and drop the unsaved changes | |
:close-other-tabs, :tabo | close 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-base | show the vcs base of the file and the file in a diff session | |
:diff-disk | show 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-this | mark the view, and in a second view compare the two in a diff session | |
:echo | <text>... | show the arguments on the last row, separated by single spaces |
:end-diff | end the diff session of the view | |
:format, :fmt | format the file with the formatter of its language or a language server | |
:get-diff-change, :diffg | put back the base text of each change under a range | |
:goto-line, :g | <line> | go to the line; :<line> does the same |
:goto-next-document, :bn | show 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, :bp | show the previous open document | |
:goto-previous-tab, :tabp, :tabN | [<N>] | go to the previous tab page, or N tab pages back |
:help | [<word>] | show the keys and commands |
:hide-search-matches, :noh, :nohl | hide the matches of the search pattern until the next search | |
: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, :n | open 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-job | pick a running shell command 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 |
:pop-directory, :popd | go to the newest directory of the stack, and remove it from the stack | |
:print-document | [<file>] | send the selection, or the document, to print-command, or to a PDF file |
:push-directory, :pushd | <directory> | put the working directory on the stack, and change it to the directory |
:put-diff-change, :diffp | put each change under a range into the other file of the diff session | |
:quit, :q | close 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, :qa | quit from every view, but not with unsaved changes | |
:quit-all!, :qa! | quit from every view and drop the unsaved changes | |
:refresh-vcs | ask 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, :rla | reload each open file as :reload does | |
:reload-config | read the config, its theme, and the plugins again | |
:restart-language-servers | [<name>...] | stop each named language server of the file, or all of them, and start them 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-about | open an [about] document with the version, the license, the build and the files of dk | |
:show-directory, :pwd | show the working directory on the last row | |
:show-directory-stack | show the stack of directories on the last row, newest first | |
:show-language-servers | show the language servers of the file, their state, and what they answer, in a popup | |
:show-messages | show the last messages of the last row | |
:show-options | open an [options] document with every config.toml key at its default | |
:show-version | show 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 is not running, or all of them |
:stop-language-servers | [<name>...] | stop each named language server of the file, or all of them, until :start-language-servers |
:toggle-option, :toggle | <key> | flip an [editor] key that is true or false until the next reload, as :set does |
:trust | trust 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, :wa | format 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, :xa | save 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
| Key | Command | Description |
|---|---|---|
: | open-prompt | open the prompt |
h | move-character-left | move left one grapheme |
left | move-character-left | move left one grapheme |
j | move-visual-line-down | move down one line |
down | move-visual-line-down | move down one line |
k | move-visual-line-up | move up one line |
up | move-visual-line-up | move up one line |
l | move-character-right | move right one grapheme |
right | move-character-right | move right one grapheme |
home | goto-line-start | go to the start of the line |
end | goto-line-end | go to the last grapheme of the line |
t | find-till-character | select to before the next match of the next key |
f | find-next-character | select to the next match of the next key |
T | find-till-previous-character | select back to after the match of the next key |
F | find-previous-character | select back to the match of the next key |
r | replace | replace each character of the selection with the next key |
R | replace-with-yanked | put the register in place of each selection |
y | yank | yank the selection to the register |
p | paste-after | paste the register after each selection |
P | paste-before | paste the register before each selection |
" | pick-register | pick the register of the next command |
A-. | repeat-last-motion | run the last motion again |
. | repeat-last-edit | run the last change again on each selection |
~ | switch-case | switch the case of each selection |
` | switch-to-lowercase | make each selection lower case |
A-` | switch-to-uppercase | make each selection upper case |
w | move-next-word-start | select to the start of the next word |
b | move-previous-word-start | select to the start of the previous word |
e | move-next-word-end | select to the end of the next word |
W | move-next-long-word-start | select to the start of the next long word |
B | move-previous-long-word-start | select back to the start of a long word |
E | move-next-long-word-end | select to the end of the next long word |
i | enter-insert-mode | enter Insert mode |
v | enter-select-mode | enter Select mode |
C-v | enter-block-mode | enter Block mode: a range on each line of a rectangle |
a | insert-after-selection | insert after the selection |
C | duplicate-ranges-on-next-line | add a range on the line below each range |
A-C | duplicate-ranges-on-previous-line | add a range on the line above each range |
, | keep-primary-range | keep only the primary range |
A-; | flip-ranges | swap the anchor and the cursor of each selection |
A-o | expand-selection | select the parent syntax node of each selection |
A-up | expand-selection | select the parent syntax node of each selection |
A-i | shrink-selection | go back to the selection before A-o, or select the first child node |
A-down | shrink-selection | go back to the selection before A-o, or select the first child node |
A-I | select-all-children | select each named child node of each selection |
A-S-down | select-all-children | select each named child node of each selection |
A-p | select-previous-sibling | select the previous named sibling node |
A-left | select-previous-sibling | select the previous named sibling node |
A-n | select-next-sibling | select the next named sibling node |
A-right | select-next-sibling | select the next named sibling node |
A-a | select-all-siblings | select each named sibling node of each selection |
s | select-regex | select each regex match inside the selections |
S | split-selection | split the selections at each regex match |
K | keep-ranges | keep the selections that match a regex |
A-K | drop-ranges | remove the selections that match a regex |
A-s | split-selection-on-newline | split the selections into their lines |
A-minus | merge-ranges | merge the selections into one |
A-_ | merge-consecutive-ranges | merge the selections that touch |
; | collapse-selection | make each selection a cursor |
A-, | drop-primary-range | remove the primary selection |
( | rotate-ranges-backward | make the previous selection primary |
) | rotate-ranges-forward | make the next selection primary |
A-( | rotate-selection-contents-backward | move the text of each selection to the previous one |
A-) | rotate-selection-contents-forward | move the text of each selection to the next one |
X | extend-to-line-bounds | select the whole lines of each selection |
A-x | shrink-to-line-bounds | shrink each selection to the whole lines in it |
> | indent | indent the lines of each selection |
< | unindent | unindent the lines of each selection |
J | join-lines | join the lines of each selection |
A-J | join-lines-select-spaces | join the lines of each selection and select the spaces |
& | align-ranges | align the selections of each line in columns |
_ | trim-selection | trim the whitespace of each selection |
c | change-selection | delete the selection, then insert |
A-c | change-selection-no-yank | delete the selection with no yank, then insert |
d | delete-selection | delete the selection |
A-d | delete-selection-no-yank | delete the selection with no yank |
u | undo | undo the last change |
U | redo | redo the last undone change |
A-u | goto-earlier-revision | move back to the change made before |
A-U | goto-later-revision | move on to the change made after |
C-i | jump-forward | go to the next jump on the jumplist |
tab | jump-forward | go to the next jump on the jumplist |
C-o | jump-backward | go back to the previous jump on the jumplist |
C-s | save-selection | save the selection to the jumplist |
C-w w | focus-next-view | focus the next view |
C-w C-w | focus-next-view | focus the next view |
C-w s | split-view-below | split the view: the new view goes below |
C-w C-s | split-view-below | split the view: the new view goes below |
C-w v | split-view-right | split the view: the new view goes to the right |
C-w C-v | split-view-right | split the view: the new view goes to the right |
C-w q | close-view | close the view |
C-w C-q | close-view | close the view |
C-w o | close-other-views | close every other view |
C-w C-o | close-other-views | close every other view |
C-w h | focus-view-left | focus the view to the left |
C-w left | focus-view-left | focus the view to the left |
C-w j | focus-view-down | focus the view below |
C-w down | focus-view-down | focus the view below |
C-w k | focus-view-up | focus the view above |
C-w up | focus-view-up | focus the view above |
C-w l | focus-view-right | focus the view to the right |
C-w right | focus-view-right | focus the view to the right |
C-w L | move-view-far-right | move the view to the far right, with the full height |
C-w K | move-view-far-up | move the view to the top, with the full width |
C-w H | move-view-far-left | move the view to the far left, with the full height |
C-w J | move-view-far-down | move the view to the bottom, with the full width |
C-w + | grow-view-height | make the view one row taller, or N rows |
C-w minus | shrink-view-height | make the view one row shorter, or N rows |
C-w > | grow-view-width | make the view one column wider, or N columns |
C-w < | shrink-view-width | make the view one column narrower, or N columns |
C-w _ | set-view-height | make the view as tall as it can be, or N rows |
C-w | | set-view-width | make the view as wide as it can be, or N columns |
C-w = | equalize-views | give the views of each split the same size |
C-c | toggle-comments | comment or uncomment the lines of each selection |
space f | pick-file | pick a file of the workspace |
space F | pick-file-in-document-directory | pick a file under the directory of the document |
space b | pick-document | pick an open document |
space j | pick-jump | pick a jump of the jumplists |
space s | pick-symbol | pick a symbol of the document |
space S | pick-workspace-symbol | pick a symbol of the workspace |
space d | pick-diagnostic | pick a diagnostic of the document |
space D | pick-workspace-diagnostic | pick a diagnostic of an open document |
space g | pick-changed-file | pick a file that the working copy changes |
space l | pick-file-change | pick a change of the file, and compare it with its parents |
space L | pick-change | pick a change of the repository, and show its patch |
space ' | reopen-last-picker | open the picker that closed last |
space u | pick-revision | pick a revision of the history |
space y | yank-to-clipboard | yank the selection to the system clipboard |
space Y | yank-primary-range-to-clipboard | yank the primary selection to the system clipboard |
space p | paste-clipboard-after | paste the system clipboard after each selection |
space P | paste-clipboard-before | paste the system clipboard before each selection |
space R | replace-selection-with-clipboard | put the system clipboard in place of each selection |
space / | search-workspace | search the working directory for a regex |
space k | show-hover | show docs for the item under the cursor |
space r | rename-symbol | rename the symbol under the cursor with a language server |
space h | select-symbol-references | select each use of the symbol under the cursor |
space a | pick-code-action | pick a code action of the language servers |
space K | show-signature-help | show signature help |
space c | toggle-comments | comment or uncomment the lines of each selection |
space ? | pick-command | pick a command and run it |
space ! | pick-job | pick a running shell command to stop it |
space B | blame-line | show the change of the cursor line |
g * | search-selection | use the selection as the search pattern |
g + | goto-later-revision | move on to the change made after |
g , | goto-newer-revision-position | go to a newer revision position, or N newer |
g . | goto-last-revision-position | go to the revision position of the current revision |
g 8 | show-character-info | show the code points of the grapheme at the cursor |
g ; | goto-older-revision-position | go to an older revision position, or N older |
g a | goto-last-accessed-document | show the document that the view showed last |
g d | goto-definition | go to the definition of the symbol |
g D | goto-declaration | go to the declaration of the symbol |
g e | goto-last-line | go to the last line |
g f | goto-file | open the file named at the cursor or by each selection |
g F | goto-file-line | open the file named at the cursor, at the line after its name |
g g | goto-document-start | go to the first line, or to line N with a count |
g h | goto-line-start | go to the start of the line |
g i | goto-implementation | go to the implementation of the symbol |
g I | insert-at-last-insert | insert where Insert mode ended the last time |
g j | move-line-down | move down one text line |
g J | join-lines-no-space | join the lines of each selection with no space |
g k | move-line-up | move up one text line |
g l | goto-line-end | go to the last grapheme of the line |
g m | goto-last-modified-document | show the document that the view left last with a change |
g M | goto-line-middle | go to the middle of the line, or to N percent of it |
g minus | goto-earlier-revision | move back to the change made before |
g n | goto-next-document | show the next open document |
g p | goto-previous-document | show the previous open document |
g q | reflow-selection | fill each paragraph of each selection to text-width |
g r | goto-reference | go to the references of the symbol |
g s | goto-first-non-whitespace | go to the first character of the line that is not whitespace |
g t | goto-next-tab | go to the next tab page, or to tab page N |
C-pagedown | goto-next-tab | go to the next tab page, or to tab page N |
g T | goto-previous-tab | go to the previous tab page, or N back |
C-pageup | goto-previous-tab | go to the previous tab page, or N back |
g v | select-last-selection | select the last selection again |
g w | goto-word | go to a two-character label |
g y | goto-type-definition | go to the type definition of the symbol |
g | | goto-column | go to grapheme N of the line |
] g | goto-next-hunk | go to the next change |
[ g | goto-previous-hunk | go to the previous change |
] G | goto-last-hunk | go to the last change |
[ G | goto-first-hunk | go to the first change |
] f | goto-next-function | go to the next function |
[ f | goto-previous-function | go to the previous function |
] t | goto-next-class | go to the next type definition |
[ t | goto-previous-class | go to the previous type definition |
] a | goto-next-parameter | go to the next parameter |
[ a | goto-previous-parameter | go to the previous parameter |
] c | goto-next-comment | go to the next comment |
[ c | goto-previous-comment | go to the previous comment |
] e | goto-next-entry | go to the next pairing |
[ e | goto-previous-entry | go to the previous pairing |
] T | goto-next-test | go to the next test |
[ T | goto-previous-test | go to the previous test |
] p | goto-next-paragraph | go to the next paragraph |
[ p | goto-previous-paragraph | go to the previous paragraph |
] x | goto-next-xml-element | go to the next (X)HTML element |
[ x | goto-previous-xml-element | go to the previous (X)HTML element |
G | goto-line | go to line N with a count, or to the last line |
H | goto-view-top | go to the top of the view, or to row N with a count |
M | goto-view-center | go to the middle of the view |
L | goto-view-bottom | go to the bottom of the view, or to row N from it |
% | select-all | select the whole text |
= | format-selection | format the selection with a language server |
I | insert-at-line-start | insert at the first character of the line |
A | insert-at-line-end | insert at the end of the line |
o | open-line-below | add a line below each range, then insert |
O | open-line-above | add a line above each range, then insert |
m m | goto-matching-bracket | go to the bracket that matches the one at the cursor |
m s | add-surround | surround each selection with the pair of the next key |
m r | replace-surround | replace the pair of the next key around each selection |
m d | delete-surround | delete the pair of the next key around each selection |
m a | select-text-object-around | select around the object of the next key |
m i | select-text-object-inner | select inside the object of the next key |
x | extend-line-below | select the line, or add the line below |
| | pipe | run the command for each selection, with its text as stdin, and put the output in its place |
A-| | pipe-to | run the command for each selection, with its text as stdin, and drop the output |
! | insert-output | run the command once, and put its output before each selection |
A-! | append-output | run the command once, and put its output after each selection |
C-z | suspend | stop dk and go back to the shell; fg brings it back |
C-a | increment | increment the item under the cursor |
C-x | decrement | decrement the item under the cursor |
C-b | scroll-page-up | scroll up one page |
pageup | scroll-page-up | scroll up one page |
C-f | scroll-page-down | scroll down one page |
pagedown | scroll-page-down | scroll down one page |
C-u | scroll-half-page-up | scroll and move every range up half a page |
C-d | scroll-half-page-down | scroll and move every range down half a page |
z z | align-view-center | put the cursor line on the middle row of the view |
z c | align-view-center | put the cursor line on the middle row of the view |
z t | align-view-top | put the cursor line on the first row of the view |
z b | align-view-bottom | put the cursor line on the last row of the view |
z m | align-view-middle | put the cursor column in the middle of the view |
z k | scroll-up | scroll the view up a count of lines |
z up | scroll-up | scroll the view up a count of lines |
z j | scroll-down | scroll the view down a count of lines |
z down | scroll-down | scroll the view down a count of lines |
z C-b | scroll-page-up | scroll up one page |
z pageup | scroll-page-up | scroll up one page |
z C-f | scroll-page-down | scroll down one page |
z pagedown | scroll-page-down | scroll down one page |
z C-u | scroll-half-page-up | scroll and move every range up half a page |
z backspace | scroll-half-page-up | scroll and move every range up half a page |
z C-d | scroll-half-page-down | scroll and move every range down half a page |
z space | scroll-half-page-down | scroll and move every range down half a page |
Z z | align-view-center | put the cursor line on the middle row of the view |
Z c | align-view-center | put the cursor line on the middle row of the view |
Z t | align-view-top | put the cursor line on the first row of the view |
Z b | align-view-bottom | put the cursor line on the last row of the view |
Z m | align-view-middle | put the cursor column in the middle of the view |
Z k | scroll-up | scroll the view up a count of lines |
Z up | scroll-up | scroll the view up a count of lines |
Z j | scroll-down | scroll the view down a count of lines |
Z down | scroll-down | scroll the view down a count of lines |
Z C-b | scroll-page-up | scroll up one page |
Z pageup | scroll-page-up | scroll up one page |
Z C-f | scroll-page-down | scroll down one page |
Z pagedown | scroll-page-down | scroll down one page |
Z C-u | scroll-half-page-up | scroll and move every range up half a page |
Z backspace | scroll-half-page-up | scroll and move every range up half a page |
Z C-d | scroll-half-page-down | scroll and move every range down half a page |
Z space | scroll-half-page-down | scroll and move every range down half a page |
/ | search | search for a regex |
z / | search | search for a regex |
Z / | search | search for a regex |
? | search-backward | search back for a regex |
z ? | search-backward | search back for a regex |
Z ? | search-backward | search back for a regex |
n | search-next | select the next search match |
z n | search-next | select the next search match |
Z n | search-next | select the next search match |
N | search-previous | select the previous search match |
z N | search-previous | select the previous search match |
Z N | search-previous | select the previous search match |
* | search-selection-detect-word-boundaries | use the selection as the search pattern, with word boundaries |
A-* | search-selection | use the selection as the search pattern |
C-e | scroll-down | scroll the view down a count of lines |
C-y | scroll-up | scroll the view up a count of lines |
Insert mode
| Key | Command | Description |
|---|---|---|
esc | enter-normal-mode | return to Normal mode |
C-s | commit-revision | make an undo step of the text typed so far |
C-x | show-completions | ask the language servers for completions |
C-r | insert-register | paste a register at each cursor |
C-g | show-signature-help | show signature help |
C-j | insert-newline | add a line break |
ret | insert-newline | add a line break |
C-w | delete-word-backward | delete back to the start of the word |
A-backspace | delete-word-backward | delete back to the start of the word |
A-d | delete-word-forward | delete to the end of the word |
A-del | delete-word-forward | delete to the end of the word |
C-u | delete-to-line-start | delete back to the indent, then to the line start |
C-k | delete-to-line-end | delete to the end of the line |
C-h | delete-character-backward | delete the grapheme before the cursor |
backspace | delete-character-backward | delete the grapheme before the cursor |
S-backspace | delete-character-backward | delete the grapheme before the cursor |
C-d | delete-character-forward | delete the grapheme at the cursor |
del | delete-character-forward | delete the grapheme at the cursor |
up | move-visual-line-up | move up one line |
down | move-visual-line-down | move down one line |
left | move-character-left | move left one grapheme |
right | move-character-right | move right one grapheme |
pageup | scroll-page-up | scroll up one page |
pagedown | scroll-page-down | scroll down one page |
home | goto-line-start | go to the start of the line |
end | goto-line-ending | go to the line ending |
tab | smart-tab | select the next tab stop of the snippet |
S-tab | insert-tab-character | insert a tab, or spaces to the next indent column |
any text | insert-text | type it at the cursor |
Select mode
| Key | Command | Description |
|---|---|---|
: | open-prompt | open the prompt |
h | extend-character-left | extend left one grapheme |
left | extend-character-left | extend left one grapheme |
j | extend-visual-line-down | extend down one line |
down | extend-visual-line-down | extend down one line |
k | extend-visual-line-up | extend up one line |
up | extend-visual-line-up | extend up one line |
l | extend-character-right | extend right one grapheme |
right | extend-character-right | extend right one grapheme |
t | extend-till-character | extend to before the next match of the next key |
f | extend-next-character | extend to the next match of the next key |
T | extend-till-previous-character | extend back to after the match of the next key |
F | extend-previous-character | extend back to the match of the next key |
home | extend-to-line-start | extend to the start of the line |
end | extend-to-line-end | extend to the end of the line |
r | replace | replace each character of the selection with the next key |
R | replace-with-yanked | put the register in place of each selection |
y | yank | yank the selection to the register |
p | paste-after | paste the register after each selection |
P | paste-before | paste the register before each selection |
" | pick-register | pick the register of the next command |
A-. | repeat-last-motion | run the last motion again |
. | repeat-last-edit | run the last change again on each selection |
~ | switch-case | switch the case of each selection |
` | switch-to-lowercase | make each selection lower case |
A-` | switch-to-uppercase | make each selection upper case |
w | extend-next-word-start | extend to the start of the next word |
b | extend-previous-word-start | extend to the start of the previous word |
e | extend-next-word-end | extend to the end of the next word |
W | extend-next-long-word-start | extend to the start of the next long word |
B | extend-previous-long-word-start | extend back to the start of a long word |
E | extend-next-long-word-end | extend to the end of the next long word |
i | enter-insert-mode | enter Insert mode |
esc | exit-select-mode | return to Normal mode |
v | enter-normal-mode | return to Normal mode |
C-v | enter-block-mode | enter Block mode: a range on each line of a rectangle |
a | insert-after-selection | insert after the selection |
C | duplicate-ranges-on-next-line | add a range on the line below each range |
A-C | duplicate-ranges-on-previous-line | add a range on the line above each range |
, | keep-primary-range | keep only the primary range |
A-; | flip-ranges | swap the anchor and the cursor of each selection |
A-o | expand-selection | select the parent syntax node of each selection |
A-up | expand-selection | select the parent syntax node of each selection |
A-i | shrink-selection | go back to the selection before A-o, or select the first child node |
A-down | shrink-selection | go back to the selection before A-o, or select the first child node |
A-I | select-all-children | select each named child node of each selection |
A-S-down | select-all-children | select each named child node of each selection |
A-p | select-previous-sibling | select the previous named sibling node |
A-left | select-previous-sibling | select the previous named sibling node |
A-n | select-next-sibling | select the next named sibling node |
A-right | select-next-sibling | select the next named sibling node |
A-a | select-all-siblings | select each named sibling node of each selection |
s | select-regex | select each regex match inside the selections |
S | split-selection | split the selections at each regex match |
K | keep-ranges | keep the selections that match a regex |
A-K | drop-ranges | remove the selections that match a regex |
A-s | split-selection-on-newline | split the selections into their lines |
A-minus | merge-ranges | merge the selections into one |
A-_ | merge-consecutive-ranges | merge the selections that touch |
; | collapse-selection | make each selection a cursor |
A-, | drop-primary-range | remove the primary selection |
( | rotate-ranges-backward | make the previous selection primary |
) | rotate-ranges-forward | make the next selection primary |
A-( | rotate-selection-contents-backward | move the text of each selection to the previous one |
A-) | rotate-selection-contents-forward | move the text of each selection to the next one |
X | extend-to-line-bounds | select the whole lines of each selection |
A-x | shrink-to-line-bounds | shrink each selection to the whole lines in it |
> | indent | indent the lines of each selection |
< | unindent | unindent the lines of each selection |
J | join-lines | join the lines of each selection |
A-J | join-lines-select-spaces | join the lines of each selection and select the spaces |
& | align-ranges | align the selections of each line in columns |
_ | trim-selection | trim the whitespace of each selection |
c | change-selection | delete the selection, then insert |
A-c | change-selection-no-yank | delete the selection with no yank, then insert |
d | delete-selection | delete the selection |
A-d | delete-selection-no-yank | delete the selection with no yank |
u | undo | undo the last change |
U | redo | redo the last undone change |
C-i | jump-forward | go to the next jump on the jumplist |
tab | jump-forward | go to the next jump on the jumplist |
C-o | jump-backward | go back to the previous jump on the jumplist |
C-s | save-selection | save the selection to the jumplist |
C-w w | focus-next-view | focus the next view |
C-w C-w | focus-next-view | focus the next view |
C-w s | split-view-below | split the view: the new view goes below |
C-w C-s | split-view-below | split the view: the new view goes below |
C-w v | split-view-right | split the view: the new view goes to the right |
C-w C-v | split-view-right | split the view: the new view goes to the right |
C-w q | close-view | close the view |
C-w C-q | close-view | close the view |
C-w o | close-other-views | close every other view |
C-w C-o | close-other-views | close every other view |
C-w h | focus-view-left | focus the view to the left |
C-w left | focus-view-left | focus the view to the left |
C-w j | focus-view-down | focus the view below |
C-w down | focus-view-down | focus the view below |
C-w k | focus-view-up | focus the view above |
C-w up | focus-view-up | focus the view above |
C-w l | focus-view-right | focus the view to the right |
C-w right | focus-view-right | focus the view to the right |
C-w L | move-view-far-right | move the view to the far right, with the full height |
C-w K | move-view-far-up | move the view to the top, with the full width |
C-w H | move-view-far-left | move the view to the far left, with the full height |
C-w J | move-view-far-down | move the view to the bottom, with the full width |
C-w + | grow-view-height | make the view one row taller, or N rows |
C-w minus | shrink-view-height | make the view one row shorter, or N rows |
C-w > | grow-view-width | make the view one column wider, or N columns |
C-w < | shrink-view-width | make the view one column narrower, or N columns |
C-w _ | set-view-height | make the view as tall as it can be, or N rows |
C-w | | set-view-width | make the view as wide as it can be, or N columns |
C-w = | equalize-views | give the views of each split the same size |
C-c | toggle-comments | comment or uncomment the lines of each selection |
space f | pick-file | pick a file of the workspace |
space F | pick-file-in-document-directory | pick a file under the directory of the document |
space b | pick-document | pick an open document |
space j | pick-jump | pick a jump of the jumplists |
space s | pick-symbol | pick a symbol of the document |
space S | pick-workspace-symbol | pick a symbol of the workspace |
space d | pick-diagnostic | pick a diagnostic of the document |
space D | pick-workspace-diagnostic | pick a diagnostic of an open document |
space g | pick-changed-file | pick a file that the working copy changes |
space l | pick-file-change | pick a change of the file, and compare it with its parents |
space L | pick-change | pick a change of the repository, and show its patch |
space ' | reopen-last-picker | open the picker that closed last |
space u | pick-revision | pick a revision of the history |
space y | yank-to-clipboard | yank the selection to the system clipboard |
space Y | yank-primary-range-to-clipboard | yank the primary selection to the system clipboard |
space p | paste-clipboard-after | paste the system clipboard after each selection |
space P | paste-clipboard-before | paste the system clipboard before each selection |
space R | replace-selection-with-clipboard | put the system clipboard in place of each selection |
space / | search-workspace | search the working directory for a regex |
space k | show-hover | show docs for the item under the cursor |
space r | rename-symbol | rename the symbol under the cursor with a language server |
space h | select-symbol-references | select each use of the symbol under the cursor |
space a | pick-code-action | pick a code action of the language servers |
space K | show-signature-help | show signature help |
space c | toggle-comments | comment or uncomment the lines of each selection |
space ? | pick-command | pick a command and run it |
space ! | pick-job | pick a running shell command to stop it |
space B | blame-line | show the change of the cursor line |
g * | search-selection | use the selection as the search pattern |
g , | goto-newer-revision-position | go to a newer revision position, or N newer |
g . | goto-last-revision-position | go to the revision position of the current revision |
g 8 | show-character-info | show the code points of the grapheme at the cursor |
g ; | goto-older-revision-position | go to an older revision position, or N older |
g a | goto-last-accessed-document | show the document that the view showed last |
g d | goto-definition | go to the definition of the symbol |
g D | goto-declaration | go to the declaration of the symbol |
g e | extend-to-last-line | extend to the last line |
g f | goto-file | open the file named at the cursor or by each selection |
g F | goto-file-line | open the file named at the cursor, at the line after its name |
g g | extend-to-document-start | extend to the first line, or to line N with a count |
g h | extend-to-line-start | extend to the start of the line |
g i | goto-implementation | go to the implementation of the symbol |
g I | insert-at-last-insert | insert where Insert mode ended the last time |
g j | extend-line-down | extend down one text line |
g J | join-lines-no-space | join the lines of each selection with no space |
g k | extend-line-up | extend up one text line |
g l | extend-to-line-end | extend to the end of the line |
g m | goto-last-modified-document | show the document that the view left last with a change |
g M | extend-to-line-middle | extend to the middle of the line, or to N percent of it |
g n | goto-next-document | show the next open document |
g p | goto-previous-document | show the previous open document |
g q | reflow-selection | fill each paragraph of each selection to text-width |
g r | goto-reference | go to the references of the symbol |
g s | extend-to-first-non-whitespace | extend to the first character of the line that is not whitespace |
g t | goto-next-tab | go to the next tab page, or to tab page N |
C-pagedown | goto-next-tab | go to the next tab page, or to tab page N |
g T | goto-previous-tab | go to the previous tab page, or N back |
C-pageup | goto-previous-tab | go to the previous tab page, or N back |
g v | select-last-selection | select the last selection again |
g w | extend-to-word | extend to a two-character label |
g y | goto-type-definition | go to the type definition of the symbol |
g | | extend-to-column | extend to grapheme N of the line |
] g | goto-next-hunk | go to the next change |
[ g | goto-previous-hunk | go to the previous change |
] G | goto-last-hunk | go to the last change |
[ G | goto-first-hunk | go to the first change |
] f | goto-next-function | go to the next function |
[ f | goto-previous-function | go to the previous function |
] t | goto-next-class | go to the next type definition |
[ t | goto-previous-class | go to the previous type definition |
] a | goto-next-parameter | go to the next parameter |
[ a | goto-previous-parameter | go to the previous parameter |
] c | goto-next-comment | go to the next comment |
[ c | goto-previous-comment | go to the previous comment |
] e | goto-next-entry | go to the next pairing |
[ e | goto-previous-entry | go to the previous pairing |
] T | goto-next-test | go to the next test |
[ T | goto-previous-test | go to the previous test |
] p | goto-next-paragraph | go to the next paragraph |
[ p | goto-previous-paragraph | go to the previous paragraph |
] x | goto-next-xml-element | go to the next (X)HTML element |
[ x | goto-previous-xml-element | go to the previous (X)HTML element |
G | goto-line | go to line N with a count, or to the last line |
H | goto-view-top | go to the top of the view, or to row N with a count |
M | goto-view-center | go to the middle of the view |
L | goto-view-bottom | go to the bottom of the view, or to row N from it |
% | select-all | select the whole text |
= | format-selection | format the selection with a language server |
I | insert-at-line-start | insert at the first character of the line |
A | insert-at-line-end | insert at the end of the line |
o | open-line-below | add a line below each range, then insert |
O | open-line-above | add a line above each range, then insert |
m m | goto-matching-bracket | go to the bracket that matches the one at the cursor |
m s | add-surround | surround each selection with the pair of the next key |
m r | replace-surround | replace the pair of the next key around each selection |
m d | delete-surround | delete the pair of the next key around each selection |
m a | select-text-object-around | select around the object of the next key |
m i | select-text-object-inner | select inside the object of the next key |
x | extend-line-below | select the line, or add the line below |
| | pipe | run the command for each selection, with its text as stdin, and put the output in its place |
A-| | pipe-to | run the command for each selection, with its text as stdin, and drop the output |
! | insert-output | run the command once, and put its output before each selection |
A-! | append-output | run the command once, and put its output after each selection |
C-z | suspend | stop dk and go back to the shell; fg brings it back |
C-a | increment | increment the item under the cursor |
C-x | decrement | decrement the item under the cursor |
C-b | scroll-page-up | scroll up one page |
pageup | scroll-page-up | scroll up one page |
C-f | scroll-page-down | scroll down one page |
pagedown | scroll-page-down | scroll down one page |
C-u | scroll-half-page-up | scroll and move every range up half a page |
C-d | scroll-half-page-down | scroll and move every range down half a page |
z z | align-view-center | put the cursor line on the middle row of the view |
z c | align-view-center | put the cursor line on the middle row of the view |
z t | align-view-top | put the cursor line on the first row of the view |
z b | align-view-bottom | put the cursor line on the last row of the view |
z m | align-view-middle | put the cursor column in the middle of the view |
z k | scroll-up | scroll the view up a count of lines |
z up | scroll-up | scroll the view up a count of lines |
z j | scroll-down | scroll the view down a count of lines |
z down | scroll-down | scroll the view down a count of lines |
z C-b | scroll-page-up | scroll up one page |
z pageup | scroll-page-up | scroll up one page |
z C-f | scroll-page-down | scroll down one page |
z pagedown | scroll-page-down | scroll down one page |
z C-u | scroll-half-page-up | scroll and move every range up half a page |
z backspace | scroll-half-page-up | scroll and move every range up half a page |
z C-d | scroll-half-page-down | scroll and move every range down half a page |
z space | scroll-half-page-down | scroll and move every range down half a page |
Z z | align-view-center | put the cursor line on the middle row of the view |
Z c | align-view-center | put the cursor line on the middle row of the view |
Z t | align-view-top | put the cursor line on the first row of the view |
Z b | align-view-bottom | put the cursor line on the last row of the view |
Z m | align-view-middle | put the cursor column in the middle of the view |
Z k | scroll-up | scroll the view up a count of lines |
Z up | scroll-up | scroll the view up a count of lines |
Z j | scroll-down | scroll the view down a count of lines |
Z down | scroll-down | scroll the view down a count of lines |
Z C-b | scroll-page-up | scroll up one page |
Z pageup | scroll-page-up | scroll up one page |
Z C-f | scroll-page-down | scroll down one page |
Z pagedown | scroll-page-down | scroll down one page |
Z C-u | scroll-half-page-up | scroll and move every range up half a page |
Z backspace | scroll-half-page-up | scroll and move every range up half a page |
Z C-d | scroll-half-page-down | scroll and move every range down half a page |
Z space | scroll-half-page-down | scroll and move every range down half a page |
/ | search | search for a regex |
z / | search | search for a regex |
Z / | search | search for a regex |
? | search-backward | search back for a regex |
z ? | search-backward | search back for a regex |
Z ? | search-backward | search back for a regex |
z n | search-next | select the next search match |
Z n | search-next | select the next search match |
z N | search-previous | select the previous search match |
Z N | search-previous | select the previous search match |
n | extend-search-next | add the next search match as a selection |
N | extend-search-previous | add the previous search match as a selection |
* | search-selection-detect-word-boundaries | use the selection as the search pattern, with word boundaries |
A-* | search-selection | use the selection as the search pattern |
C-e | scroll-down | scroll the view down a count of lines |
C-y | scroll-up | scroll the view up a count of lines |
Block mode
| Key | Command | Description |
|---|---|---|
: | open-prompt | open the prompt |
C-v | enter-normal-mode | return to Normal mode |
$ | extend-to-line-end | extend to the end of the line |
o | flip-block-corners | in Block mode, go to the opposite corner |
O | flip-block-columns | in Block mode, go to the other corner on the same line |
Command-line editing keys
The keys of the : prompt. [keys] does not bind them.
| Key | Description |
|---|---|
ret | run the line |
up, C-p | show an older command line |
down, C-n | show a newer command line |
esc | close the prompt |
left, C-b | move left one grapheme |
right, C-f | move right one grapheme |
home, C-a | move to the start of the line |
end, C-e | move to the end of the line |
backspace, C-h | delete the grapheme before the cursor, or close an empty line |
del, C-d | delete the grapheme under the cursor |
C-u | delete to the start of the line |
C-k | delete to the end of the line |
C-w, A-backspace | delete the word before the cursor |
tab | complete the line, or select the next match |
S-tab | select the previous match |
C-r | insert the first value of a register |
any text | type it at the cursor |
Key commands
A key of [keys] in config.toml binds these names.
| Name | Description |
|---|---|
add-surround | surround each selection with the pair of the next key |
align-ranges | align the selections of each line in columns |
align-view-bottom | put the cursor line on the last row of the view |
align-view-center | put the cursor line on the middle row of the view |
align-view-middle | put the cursor column in the middle of the view |
align-view-top | put the cursor line on the first row of the view |
annotate | show or hide the change of each line in a column of the gutter |
append-output | run the command once, and put its output after each selection |
blame-line | show the change of the cursor line |
change-selection | delete the selection, then insert |
change-selection-no-yank | delete the selection with no yank, then insert |
close-other-views | close every other view |
close-view | close the view |
collapse-selection | make each selection a cursor |
commit-revision | make an undo step of the text typed so far |
decrement | decrement the item under the cursor |
delete-character-backward | delete the grapheme before the cursor |
delete-character-forward | delete the grapheme at the cursor |
delete-selection | delete the selection |
delete-selection-no-yank | delete the selection with no yank |
delete-surround | delete the pair of the next key around each selection |
delete-to-line-end | delete to the end of the line |
delete-to-line-start | delete back to the indent, then to the line start |
delete-word-backward | delete back to the start of the word |
delete-word-forward | delete to the end of the word |
diff-base | show the vcs base of the file and the file in a diff session |
drop-primary-range | remove the primary selection |
drop-ranges | remove the selections that match a regex |
duplicate-ranges-on-next-line | add a range on the line below each range |
duplicate-ranges-on-previous-line | add a range on the line above each range |
ensure-ranges-forward | make each selection face forward |
enter-block-mode | enter Block mode: a range on each line of a rectangle |
enter-insert-mode | enter Insert mode |
enter-normal-mode | return to Normal mode |
enter-select-mode | enter Select mode |
equalize-views | give the views of each split the same size |
exit-select-mode | return to Normal mode |
expand-selection | select the parent syntax node of each selection |
extend-character-left | extend left one grapheme |
extend-character-right | extend right one grapheme |
extend-line-below | select the line, or add the line below |
extend-line-down | extend down one text line |
extend-line-up | extend up one text line |
extend-next-character | extend to the next match of the next key |
extend-next-long-word-end | extend to the end of the next long word |
extend-next-long-word-start | extend to the start of the next long word |
extend-next-word-end | extend to the end of the next word |
extend-next-word-start | extend to the start of the next word |
extend-previous-character | extend back to the match of the next key |
extend-previous-long-word-start | extend back to the start of a long word |
extend-previous-word-start | extend to the start of the previous word |
extend-search-next | add the next search match as a selection |
extend-search-previous | add the previous search match as a selection |
extend-till-character | extend to before the next match of the next key |
extend-till-previous-character | extend back to after the match of the next key |
extend-to-column | extend to grapheme N of the line |
extend-to-document-start | extend to the first line, or to line N with a count |
extend-to-first-non-whitespace | extend to the first character of the line that is not whitespace |
extend-to-last-line | extend to the last line |
extend-to-line-bounds | select the whole lines of each selection |
extend-to-line-end | extend to the end of the line |
extend-to-line-middle | extend to the middle of the line, or to N percent of it |
extend-to-line-start | extend to the start of the line |
extend-to-word | extend to a two-character label |
extend-visual-line-down | extend down one line |
extend-visual-line-up | extend up one line |
find-next-character | select to the next match of the next key |
find-previous-character | select back to the match of the next key |
find-till-character | select to before the next match of the next key |
find-till-previous-character | select back to after the match of the next key |
flip-block-columns | in Block mode, go to the other corner on the same line |
flip-block-corners | in Block mode, go to the opposite corner |
flip-ranges | swap the anchor and the cursor of each selection |
focus-next-view | focus the next view |
focus-view-down | focus the view below |
focus-view-left | focus the view to the left |
focus-view-right | focus the view to the right |
focus-view-up | focus the view above |
format-selection | format the selection with a language server |
goto-column | go to grapheme N of the line |
goto-declaration | go to the declaration of the symbol |
goto-definition | go to the definition of the symbol |
goto-document-start | go to the first line, or to line N with a count |
goto-earlier-revision | move back to the change made before |
goto-file | open the file named at the cursor or by each selection |
goto-file-line | open the file named at the cursor, at the line after its name |
goto-first-hunk | go to the first change |
goto-first-non-whitespace | go to the first character of the line that is not whitespace |
goto-implementation | go to the implementation of the symbol |
goto-last-accessed-document | show the document that the view showed last |
goto-last-hunk | go to the last change |
goto-last-line | go to the last line |
goto-last-modified-document | show the document that the view left last with a change |
goto-last-revision-position | go to the revision position of the current revision |
goto-later-revision | move on to the change made after |
goto-line | go to line N with a count, or to the last line |
goto-line-end | go to the last grapheme of the line |
goto-line-ending | go to the line ending |
goto-line-middle | go to the middle of the line, or to N percent of it |
goto-line-start | go to the start of the line |
goto-matching-bracket | go to the bracket that matches the one at the cursor |
goto-newer-revision-position | go to a newer revision position, or N newer |
goto-next-class | go to the next type definition |
goto-next-comment | go to the next comment |
goto-next-document | show the next open document |
goto-next-entry | go to the next pairing |
goto-next-function | go to the next function |
goto-next-hunk | go to the next change |
goto-next-paragraph | go to the next paragraph |
goto-next-parameter | go to the next parameter |
goto-next-tab | go to the next tab page, or to tab page N |
goto-next-tab-stop | select the next tab stop of the snippet |
goto-next-test | go to the next test |
goto-next-xml-element | go to the next (X)HTML element |
goto-older-revision-position | go to an older revision position, or N older |
goto-previous-class | go to the previous type definition |
goto-previous-comment | go to the previous comment |
goto-previous-document | show the previous open document |
goto-previous-entry | go to the previous pairing |
goto-previous-function | go to the previous function |
goto-previous-hunk | go to the previous change |
goto-previous-paragraph | go to the previous paragraph |
goto-previous-parameter | go to the previous parameter |
goto-previous-tab | go to the previous tab page, or N back |
goto-previous-tab-stop | select the previous tab stop of the snippet |
goto-previous-test | go to the previous test |
goto-previous-xml-element | go to the previous (X)HTML element |
goto-reference | go to the references of the symbol |
goto-type-definition | go to the type definition of the symbol |
goto-view-bottom | go to the bottom of the view, or to row N from it |
goto-view-center | go to the middle of the view |
goto-view-top | go to the top of the view, or to row N with a count |
goto-word | go to a two-character label |
grow-view-height | make the view one row taller, or N rows |
grow-view-width | make the view one column wider, or N columns |
hide-search-matches | hide the matches of the search pattern until the next search |
increment | increment the item under the cursor |
indent | indent the lines of each selection |
insert-after-selection | insert after the selection |
insert-at-last-insert | insert where Insert mode ended the last time |
insert-at-line-end | insert at the end of the line |
insert-at-line-start | insert at the first character of the line |
insert-newline | add a line break |
insert-output | run the command once, and put its output before each selection |
insert-register | paste a register at each cursor |
insert-tab-character | insert a tab, or spaces to the next indent column |
join-lines | join the lines of each selection |
join-lines-no-space | join the lines of each selection with no space |
join-lines-select-spaces | join the lines of each selection and select the spaces |
jump-backward | go back to the previous jump on the jumplist |
jump-forward | go to the next jump on the jumplist |
keep-primary-range | keep only the primary range |
keep-ranges | keep the selections that match a regex |
merge-consecutive-ranges | merge the selections that touch |
merge-ranges | merge the selections into one |
move-character-left | move left one grapheme |
move-character-right | move right one grapheme |
move-line-down | move down one text line |
move-line-up | move up one text line |
move-next-long-word-end | select to the end of the next long word |
move-next-long-word-start | select to the start of the next long word |
move-next-word-end | select to the end of the next word |
move-next-word-start | select to the start of the next word |
move-previous-long-word-start | select back to the start of a long word |
move-previous-word-start | select to the start of the previous word |
move-view-far-down | move the view to the bottom, with the full width |
move-view-far-left | move the view to the far left, with the full height |
move-view-far-right | move the view to the far right, with the full height |
move-view-far-up | move the view to the top, with the full width |
move-visual-line-down | move down one line |
move-visual-line-up | move up one line |
open-line-above | add a line above each range, then insert |
open-line-below | add a line below each range, then insert |
open-prompt | open the prompt |
paste-after | paste the register after each selection |
paste-before | paste the register before each selection |
paste-clipboard-after | paste the system clipboard after each selection |
paste-clipboard-before | paste the system clipboard before each selection |
pick-change | pick a change of the repository, and show its patch |
pick-changed-file | pick a file that the working copy changes |
pick-code-action | pick a code action of the language servers |
pick-command | pick a command and run it |
pick-diagnostic | pick a diagnostic of the document |
pick-document | pick an open document |
pick-file | pick a file of the workspace |
pick-file-change | pick a change of the file, and compare it with its parents |
pick-file-in-document-directory | pick a file under the directory of the document |
pick-job | pick a running shell command to stop it |
pick-jump | pick a jump of the jumplists |
pick-register | pick the register of the next command |
pick-revision | pick a revision of the history |
pick-symbol | pick a symbol of the document |
pick-workspace-diagnostic | pick a diagnostic of an open document |
pick-workspace-symbol | pick a symbol of the workspace |
pipe | run the command for each selection, with its text as stdin, and put the output in its place |
pipe-to | run the command for each selection, with its text as stdin, and drop the output |
redo | redo the last undone change |
reflow-selection | fill each paragraph of each selection to text-width |
refresh-vcs | ask the vcs plugin again for the change id and the base of each shown file |
rename-symbol | rename the symbol under the cursor with a language server |
reopen-last-picker | open the picker that closed last |
repeat-last-edit | run the last change again on each selection |
repeat-last-motion | run the last motion again |
replace | replace each character of the selection with the next key |
replace-selection-with-clipboard | put the system clipboard in place of each selection |
replace-surround | replace the pair of the next key around each selection |
replace-with-yanked | put the register in place of each selection |
rotate-ranges-backward | make the previous selection primary |
rotate-ranges-forward | make the next selection primary |
rotate-selection-contents-backward | move the text of each selection to the previous one |
rotate-selection-contents-forward | move the text of each selection to the next one |
save-selection | save the selection to the jumplist |
scroll-down | scroll the view down a count of lines |
scroll-half-page-down | scroll and move every range down half a page |
scroll-half-page-up | scroll and move every range up half a page |
scroll-page-down | scroll down one page |
scroll-page-up | scroll up one page |
scroll-up | scroll the view up a count of lines |
search | search for a regex |
search-backward | search back for a regex |
search-next | select the next search match |
search-previous | select the previous search match |
search-selection | use the selection as the search pattern |
search-selection-detect-word-boundaries | use the selection as the search pattern, with word boundaries |
search-workspace | search the working directory for a regex |
select-all | select the whole text |
select-all-children | select each named child node of each selection |
select-all-siblings | select each named sibling node of each selection |
select-last-selection | select the last selection again |
select-next-sibling | select the next named sibling node |
select-previous-sibling | select the previous named sibling node |
select-regex | select each regex match inside the selections |
select-symbol-references | select each use of the symbol under the cursor |
select-text-object-around | select around the object of the next key |
select-text-object-inner | select inside the object of the next key |
set-view-height | make the view as tall as it can be, or N rows |
set-view-width | make the view as wide as it can be, or N columns |
show-character-info | show the code points of the grapheme at the cursor |
show-completions | ask the language servers for completions |
show-hover | show docs for the item under the cursor |
show-signature-help | show signature help |
shrink-selection | go back to the selection before A-o, or select the first child node |
shrink-to-line-bounds | shrink each selection to the whole lines in it |
shrink-view-height | make the view one row shorter, or N rows |
shrink-view-width | make the view one column narrower, or N columns |
smart-tab | select the next tab stop of the snippet |
split-selection | split the selections at each regex match |
split-selection-on-newline | split the selections into their lines |
split-view-below | split the view: the new view goes below |
split-view-right | split the view: the new view goes to the right |
suspend | stop dk and go back to the shell; fg brings it back |
switch-case | switch the case of each selection |
switch-to-lowercase | make each selection lower case |
switch-to-uppercase | make each selection upper case |
toggle-comments | comment or uncomment the lines of each selection |
trim-selection | trim the whitespace of each selection |
undo | undo the last change |
unindent | unindent the lines of each selection |
yank | yank the selection to the register |
yank-primary-range-to-clipboard | yank the primary selection to the system clipboard |
yank-to-clipboard | yank the selection to the system clipboard |