Files
narl-workspace/docs/wiki/Commands.md
T
nvrl 0eabcb2333 keys: one table drives dispatch, help, footers, the rail and the wiki
keymap.ts lists every key with its context, action and help line.
actions.ts holds what each one does, typed against the table so a key
without an action, or an action without a key, does not compile.
modes.ts stacks the contexts (always > sheet > drawer > workspace >
writing > focused tile > special > global) and writes the two-key
pending logic once. App.svelte's 480-line onkeydown is now one call.

Help, the panel footers (a shared Keys component), the rail's keycaps
and Commands.md all read the table; the wiki gains the card and
scratchpad key tables.

One fix on the way: Ctrl-S in the editor no longer saves twice, which
could make the second save fail as "changed somewhere else".
2026-10-22 03:42:19 +02:00

15 KiB

Keys and commands

Everything here is also on ? (:help) inside the app, which draws the same lists. Keys act on whatever has focus: the row under the cursor in the list, or the document in the focused tile. Inside the editor the full vim keymap is live, and : opens the command line, where Tab completes commands and their arguments and ↑ / ↓ recall earlier lines.

Keys

Browsing and reading

key what it does
1 … 9 · 0 switch to that space, like a workspace
Shift 1 … 9 send the marked nodes, or the selected one, to that space
Tab · Shift-Tab next / previous space
w overview of every space — hjkl, then Enter
f fullscreen the focused pane or tile; again or Esc to leave
Alt-h/j/k/l focus the tile that way, from the editor too — left of the leftmost is the list
Alt-Shift-h/j/k/l move the focused tile that way
L · Shift-Enter open the row in a new tile beside the others
gt / gT next / previous tile — in the editor too
Alt-q close the focused tile — :close; :only closes the others
j / k · ↓ ↑ move down / up the list — scroll the document when it has focus
gg / G first / last row, or top / bottom of the document — a first g, d, ] or [ waits a second in the status line
Ctrl-D / Ctrl-U half a page down / up the open document
zl / zh · zL / zH the wide table or code block at the top of the view, sideways — a little, or half its width
]] / \[\[ next / previous heading of the document — in the editor too
gO the headings as a list: j/k, Enter jumps there
F hints over the links and buttons in view — type one to follow it
gf / gx in the editor: follow the link under the cursor / open it in a tab
gx open the file under the cursor in a tab of its own
Enter · l open a document, or enter a folder — on an open keystore or sealed file, Enter asks for its password
h from the document to the list, from the list up a level
o new document here, straight into insert mode
O new folder here
i · a edit the open document
R rename what is under the cursor — document, folder or card — starting from its name
m / p pick nodes up, then drop them all into the folder you walk to
M pick up the whole folder — again puts it all back
Ctrl / Shift-click pick a row up · every row up to it — drag them onto a folder
S the special workspace: the board, the agenda and the calendar side by side — S again, q or Esc leave it
Tab · Alt-h/j/k/l in the special workspace: the next tile, or the one that way — l past the last list and j past the agenda go on too
t agenda — late, due this week, in hand, on every board — in the special workspace
T today's diary entry, started if there is none — from templates/day when the diary has one
C the diary by month, in the special workspace: h/l a day, j/k a week, H/L a month, . today, Enter opens or starts the day
[d / ]d the diary entry before / after the one open, by date
Ctrl-P find anything, in every space — Enter opens the result lit beside them, n goes on
b the board, in the special workspace: this space's, or the last one shown — 1 … 9 there shows another's
c capture a card into this space's inbox, without leaving here
Esc · q close the document, and its tile when there are several
/ full-text search, inside the current space and its text files — Tab or Ctrl-N/P walk the results, Enter opens one
n / N next / previous search result, opened beside the results — :noh clears the search
s toggle sharing for the document — asks before taking it back
y mint a new share link and copy it — asks, the old one stops working
x · dd delete what has focus — the row in the list, the document in its pane — into the trash (asks y/N)
u undo the last delete: it comes back out of the trash — :trash has the rest
gh the open document's earlier versions, as diffs — Enter brings one back
gb the documents that link to the open one — title links by title, [[ completes one while writing
: command line — Tab / Shift-Tab cycle the matches, then the argument; ↑ ↓ recall what ran before
Ctrl-S save, from anywhere
? this screen, from the editor too — h/l a column, / filters it down

On a board

The first list is the inbox, the last list is done.

key what it does
h / l to the list left / right — right of the last is the agenda
j / k down / up the cards
gg / G first / last card of the list
J / K move the card down / up its list
H / L move the card to the list left / right
Space into the done list, or back out to the inbox
Enter turn the card over: its labels, description and checklist
gf the card's notes — a document, made on first use; q comes back
o · c new card on this list
D due date: fri, tm, +3d, 10-31 …
R rename the card, or the list when it is empty
z show done cards older than a week
F a letter over every card in view — type it to put the cursor there
r read the board again, for changes made elsewhere
x · dd delete the card (asks y/N)
q · Esc leave the special workspace

On the back of a card

key what it does
j / k down / up the checklist
gg / G first / last step
Space · x tick the step, or untick it
o a new step below the cursor — :task on the line
r reword the step
J / K move the step down / up
dd drop the step
e · i · Enter write the description, in the editor — :w writes it, :q or Esc in normal mode leaves
a put on a label, or take it off — :label on the line, Tab offers the board's
R · D rename the card, its due date
H / L send the card to the list left / right
gf the card's notes — a document, made on first use; q comes back
q · Esc back to the board

In the agenda

key what it does
j / k down / up the cards, then what was written on this day in earlier years, then into the calendar
h to the board
Enter to the card, on its own board beside — or to the entry
Space done, where it stands
D due date: fri, tm, +3d … — :due on the line
: the line, with the agenda kept up — :repeat weekly acts on the card
H / L to the list left / right on its board
T today's diary entry
q · Esc leave the special workspace — a document opened from it comes back here on q

In the scratchpad

key what it does
Q lower the scratchpad over whatever is on screen, or raise it again — :scratch takes a note without it
j / k down / up the notes, the one touched last on top
o a new note, written straight away — it saves itself
Enter · e · i write the note — Esc in normal mode, or :q, comes back to the notes
K keep the note: a document in the folder being browsed, titled by its first line — :keep