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
| Key | Default | Description |
|---|---|---|
theme | "nord" | The Helix theme dk draws in: a name, or { light = “…”, dark = “…” }. |
editor.auto-completion | true | A completion request starts on its own. |
editor.auto-format | true | :w formats the file first, 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 | true, false, or a table such as { ‘(’ = ‘)’ }: a typed bracket inserts its pair. |
editor.auto-reload | true | A 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-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 | An item replaces the word after the cursor too. |
editor.completion-timeout | 250 | The ms after the last typed word char before a completion request starts. |
editor.completion-trigger-len | 2 | The 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-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 | The 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-insert | true | The 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-brackets | true | Brackets draw in the colors of the rainbow of the theme, by their depth. The rainbow-brackets of a language takes its place. |
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 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.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 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-width | 80 | The 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-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 least width of the 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}, {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-highlight | true | The uses of the symbol at the cursor show in ui.highlight after the cursor rests. |
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 | The ms that 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.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 of the document past its last match goes on from the other end. |
editor.smart-tab.enable | true | Tab 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-menu | false | Tab and S-Tab go past the completion menu to smart-tab. |
editor.sticky-context.enable | true | The first line of each scope that holds the cursor and starts above the view shows at its top. |
editor.sticky-context.max-lines | 3 | The most rows of scopes at the top of a view: the outer scopes go first, from 1 to 100. |
editor.sticky-context.max-symbols | 10000 | The 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
| 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 |
: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 args on the last row, with one space between two |
:end-diff | end the diff session of the view | |
:format, :fmt | format 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, :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 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, :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 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, :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 | |
:reset-diff-change, :diffg | put 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-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-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 a [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 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 |
: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 jump before 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 equal shares |
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 ' | 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 shell command that runs, 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 tab page before, or N back |
C-pageup | goto-previous-tab | go to the tab page before, 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 item under cursor |
C-x | decrement | decrement item under 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 jump before 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 equal shares |
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 ' | 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 shell command that runs, 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 tab page before, or N back |
C-pageup | goto-previous-tab | go to the tab page before, 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 item under cursor |
C-x | decrement | decrement item under 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, swap the corners: go to the other corner |
O | flip-block-columns | in 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.
| 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 item under 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 equal shares |
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, swap the columns of the corners: go to the other corner on the line |
flip-block-corners | in Block mode, swap the corners: go to the other 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 tab page before, or N back |
goto-previous-tab-stop | select the tab stop of the snippet before |
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 |
increment | increment item under 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 jump before 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-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 shell command that runs, 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 |