VIM Mode
Modal keyboard navigation for the Toto dashboard. If you use Vim, you already know how this works. j/k to move, Enter to mark done, d3j to delete three items, . to repeat. Desktop-only, on by default.
Enabling / Disabling
VIM mode is on by default on desktop (screens wider than 1024px). Disabled automatically on touch devices.
// Disable
localStorage.setItem('toto-vim-mode', 'off');
// Re-enable
localStorage.setItem('toto-vim-mode', 'on');
Reload the page after changing the preference.
Modes
| Mode | Indicator | Description |
|---|---|---|
| Normal | -- NORMAL -- |
Navigation and actions. Default mode. |
| Insert | -- INSERT -- |
Text input (add/edit items). Escape returns to Normal. |
| Search | /query |
Incremental search. Enter confirms, Escape cancels. |
| Command | :command |
Ex-style commands. Enter executes, Escape cancels. |
The mode indicator appears in the statusline at the bottom of the dashboard.
Navigation
| Key | Action |
|---|---|
j / ArrowDown |
Move cursor down |
k / ArrowUp |
Move cursor up |
h / ArrowLeft |
Move to list on the left |
l / ArrowRight |
Move to list on the right |
H |
Jump to first list |
L |
Jump to last list |
gg |
Jump to top of current list |
G |
Jump to bottom of current list |
$ |
Jump to bottom |
All navigation keys accept count prefixes: 5j moves down 5 items, 3l moves 3 lists right.
Actions
| Key | Action |
|---|---|
Enter |
Mark cursor item done (triggers completion animation) |
m |
Mark cursor item in-progress (triggers glow) |
x |
Delete cursor item |
e |
Expand/collapse item card (show description) |
E |
Collapse/expand entire list |
r |
Rename cursor item (enters Insert mode) |
p |
Toggle printed flag |
Space |
Toggle selection checkbox |
c |
Set category on cursor item |
Batch Actions
| Key | Action |
|---|---|
D |
Mark all selected items done (or cursor item if none selected) |
S |
Mark all selected items in-progress (or cursor item if none selected) |
Select items with Space, then use D or S to batch-apply status.
Operator-Motion Grammar
Vim's operator-motion grammar works here. An operator waits for a motion to define the range:
| Sequence | Action |
|---|---|
dd |
Delete cursor item (like x but follows Vim convention) |
d3j |
Delete cursor item + 3 items below |
dG |
Delete from cursor to end of list |
dgg |
Delete from cursor to start of list |
ss |
Mark cursor item in-progress |
s3j |
Mark cursor + 3 below as in-progress |
Count prefixes on the operator apply to the range: 2dd deletes 2 items starting from the cursor.
Advanced
| Key | Action |
|---|---|
. |
Repeat last action with its count |
u |
Undo last status change |
/ |
Open incremental search |
n |
Jump to next search match |
N |
Jump to previous search match |
: |
Open command mode |
i |
Enter Insert mode (focus add-item input) |
a |
Enter Insert mode |
o |
Enter Insert mode |
Escape |
Return to Normal mode / cancel pending operation |
Search
Press / to open the search bar. Type to filter items across all visible lists. Matching items are highlighted. Press Enter to jump to the first match, then n/N to cycle through results. Escape cancels the search and clears highlights.
Command Mode
Press : to open the command input. Available commands:
| Command | Action |
|---|---|
:q |
Close sidebar |
:help |
Show help |
Command history is accessible with arrow keys.
Undo
u reverts the last status change (done -> pending, in-progress -> pending). Undo does not work for deletions -- deleted items cannot be recovered from the keyboard.
Insert Mode
Press i, a, or o in Normal mode to enter Insert mode. The cursor moves to the add-item input field of the active list. Type your task and press Enter to add it. Press Escape to return to Normal mode.
When renaming an item (r), you also enter Insert mode with the edit form focused. Escape cancels the rename and returns to Normal.
Printable Cheatsheet
TOTO VIM MODE — QUICK REFERENCE
================================
NAVIGATION ACTIONS
---------- -------
j / k up / down Enter mark done
h / l prev / next list m mark in-progress
H / L first / last list x delete
gg top of list e expand card
G bottom of list E collapse list
5j move down 5 r rename (insert mode)
p toggle printed
SELECTION Space toggle select
--------- c set category
Space toggle checkbox
D batch done OPERATORS
S batch in-progress ---------
dd delete line
SEARCH d3j delete 3 below
------ dG delete to end
/ search ss doing line
n / N next / prev match s3j doing 3 below
ADVANCED MODES
-------- -----
. repeat last action i/a/o insert mode
u undo last change Escape normal mode
: command mode / search mode
COMMANDS
--------
:q close sidebar
:help show help
Count prefix: any digit before a key (5j, 3dd, 2D)
Disable: localStorage.setItem('toto-vim-mode', 'off')
Further Reading
- TotoFX Animations — What happens visually when you press Enter or m
- Enrichment — Expanding cards with
eto see descriptions and metadata - What Is Toto — Why VIM mode exists in a to-do list