Skip to main content

Documentation Index

Fetch the complete documentation index at: https://vorto-editor.dev/llms.txt

Use this file to discover all available pages before exploring further.

Vorto ships with vim-style default bindings and lets you override or extend them through [[bind]] entries in config.toml. Each entry maps a key sequence to a named action. New bindings layer on top of the defaults — you only need to list the keys you want to change.

[[bind]] entry fields

Each [[bind]] entry has two required fields:
FieldTypeDescription
keysstringVim-style key sequence (see notation below)
actionstringNamed action to perform (see action list below)

Key notation

Vorto parses key sequences in vim notation. Each token is either a single character or a named key in angle brackets:
NotationDescription
aBare character a
<C-s>Ctrl+s
<A-x>Alt+x (also <M-x> for Meta)
<S-x>Shift+x
<C-S-x>Ctrl+Shift+x
<space>Space bar
<esc>Escape key
<cr>Enter / Return (also <enter> or <return>)
<bs>Backspace
<tab>Tab key
<left>, <right>, <up>, <down>Arrow keys
<home>, <end>Home / End keys
Modifier prefixes are case-insensitive and dash-separated: <C-s> and <c-s> are equivalent.

Binding contexts

The key sequence determines which binding context the action is installed in:
  • Single key (e.g. <C-s>, u, G) — installed in the Initial context, active as soon as a key is pressed in Normal mode.
  • Leader sequence (e.g. <space>w, <space>f) — installed in the Leader context, active after pressing Space.
Only single-key and <space>X two-key sequences are supported. Sequences of three or more keys, or two-key sequences that don’t start with <space>, are not valid in the current version.

Valid action names

ActionDescription
Motions
leftMove cursor left
rightMove cursor right
upMove cursor up
downMove cursor down
line-startMove to start of line
line-endMove to end of line
word-forwardMove forward one word
word-backMove back one word
file-startMove to start of file
file-endMove to end of file
search-nextJump to next search match
search-prevJump to previous search match
Direct commands
saveSave the current buffer
openOpen a file
quitQuit (prompts if unsaved)
quit-forceQuit without saving
save-and-quitSave then quit
goto-lineJump to a specific line number
enter-insertEnter Insert mode
enter-normalEnter Normal mode
enter-visualEnter Visual mode
enter-visual-lineEnter Visual Line mode
enter-visual-blockEnter Visual Block mode
open-line-belowOpen a new line below and enter Insert mode
open-line-aboveOpen a new line above and enter Insert mode
pastePaste from the yank register
undoUndo last change
redoRedo last undone change
delete-charDelete character under the cursor
command-promptOpen the command prompt
search-forwardOpen the forward search prompt
search-backwardOpen the backward search prompt
fuzzy-filesOpen fuzzy file finder
fuzzy-files-hiddenOpen fuzzy file finder including hidden files
fuzzy-linesOpen fuzzy line search
fuzzy-workspaceOpen fuzzy workspace search
select-whole-bufferSelect the entire buffer
Operators
delete-operatorDelete motion/object
yank-operatorYank motion/object
change-operatorChange motion/object
Prefix transitions
leaderEnter the Leader prefix context
goto-prefixEnter the Goto prefix context

TOML syntax forms

Table-array form

Use one [[bind]] block per entry. This is the most readable form for a small number of custom bindings:
[[bind]]
keys = "<C-s>"
action = "save"

[[bind]]
keys = "<space>w"
action = "save"

[[bind]]
keys = "<space>f"
action = "fuzzy-files"

[[bind]]
keys = "<space>F"
action = "fuzzy-files-hidden"

Inline array form

Use a single bind key with an inline array of objects. Convenient when you want to group all your bindings in one place:
bind = [
  { keys = "<C-s>",      action = "save" },
  { keys = "<space>w",   action = "save" },
  { keys = "<space>f",   action = "fuzzy-files" },
  { keys = "<space>F",   action = "fuzzy-files-hidden" },
  { keys = "<space>l",   action = "fuzzy-lines" },
]
Both forms are equivalent — choose whichever suits your style. You cannot mix them in the same file.

Overriding existing bindings

A new [[bind]] entry for a key that already has a default binding replaces the default. For example, to remap u from Undo to Quit:
[[bind]]
keys = "u"
action = "quit"
The original u → Undo binding is discarded. All other defaults remain intact.