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