-
Notifications
You must be signed in to change notification settings - Fork 1
Keybindings
Chen Miao edited this page Mar 10, 2026
·
1 revision
This page lists the current CRIEW TUI keys by page and modal state. Use it for operator reference, training material, and future screenshots or annotated UI guides.
- Key behavior is state-dependent. The same key can mean page toggle, completion, or indentation depending on the active modal surface.
-
ui.keymapaffects only the main page navigation layer. Reply editing, config editing, search, and the inline code editor keep their own fixed bindings. - The current source of truth is the TUI input handler in
src/ui/tui/input.rs.
- Suggested file:
images/keybindings-main-pages.png - Suggested capture: Mail page and code-browser page with the header keymap label visible.
-
:: Open the command palette. This is the preferred entry key. -
F1: Toggle the command palette open or closed. -
Ctrl+backtick: Toggle the command palette. CRIEW also accepts several terminal-specific encodings of the same shortcut. -
Tab: Toggle between the Mail page and the Code Browser page. This fails when no kernel tree is configured. -
Enter: Act on the current selection. On the Mail page it opens the selected mailbox or thread. On the Code Browser tree it expands, collapses, or selects the current row. -
Esc: Show the reminder to use the command palette. -
q: Does not exit from the main page. CRIEW tells you to use the command palette instead. -
Ctrl+C: Does not exit from the main page. CRIEW tells you to use the command palette instead.
-
ui.keymap = "default":jandlmove focus between panes.iandkmove inside the focused pane.count+iandcount+krepeat vertical movement. -
ui.keymap = "vim":handlmove focus between panes.jandkmove inside the focused pane.count+jandcount+krepeat vertical movement.ggjumps to the top of the active pane.Gjumps to the bottom.qqexits quickly. -
ui.keymap = "custom": The header showscustom, but navigation still follows thedefaultlayout today.
The same navigation layer is reused on both top-level pages:
- Mail page:
focus moves between
Subscriptions,Threads, andPreview. - Code Browser page:
focus moves between
TreeandSource.
- Suggested file:
images/keybindings-mail-page.png - Suggested capture: Three-pane mail layout with one subscription selected, one thread selected, and preview content visible.
-
/: Open thread search. Search is available only on the Mail page. -
y: Enable the selected subscription. Works only whenSubscriptionshas focus. -
n: Disable the selected subscription. Works only whenSubscriptionshas focus. -
EnteronSubscriptions: Open the selected mailbox. -
EnteronThreads: Select the current thread and move focus toPreview. -
-: Select the previous thread whilePreviewkeeps focus. -
=or+: Select the next thread whilePreviewkeeps focus. -
e: Open the reply panel whenPreviewhas focus. -
r: Open the reply panel from anywhere on the Mail page. -
[: Expand the focused mail pane to the left. -
]: Expand the focused mail pane to the right. -
{: Shrink the focused mail pane toward the left. -
}: Shrink the focused mail pane toward the right. Pane widths are persisted inui-state.toml. -
a: Apply the selected patch series. Works only whenThreadshas focus. -
d: Download or export the selected patch series. Works only whenThreadshas focus. -
u: Undo the last patch apply action. Works only whenThreadshas focus.
- Suggested file:
images/keybindings-code-browser.png - Suggested capture: Tree pane on the left, source preview on the right, with one real source file selected.
- Main page navigation keys still apply here.
They move between the tree and source panes,
scroll source preview,
and support count prefixes or
ggandGwhenui.keymap = "vim". -
Enteron the tree pane: Expand or collapse directories. On files, keep the file selected and reset source scroll. -
eon the source pane: Enter the inline code editor. -
Eon the source pane: Open the selected file in externalvim.
- Suggested file:
images/keybindings-command-palette.png - Suggested capture: Palette open with completion suggestions visible.
-
Esc: Close the palette. -
Enter: Run the current command. -
Backspace: Delete one character. -
Tab: Apply completion. A secondTabcan expand or show the current completion set. -
F1orCtrl+backtick: Toggle the palette closed again.
-
quitorexit: Exit CRIEW. -
restart: Restart the TUI with current startup config. -
help: Show the built-in command summary. -
sync: Sync all enabled mailboxes, or the current default mailbox when nothing is enabled. -
sync <mailbox>: Sync one mailbox immediately. -
config show: Open the visual config editor. -
config show <key>: Show the file value or effective runtime fallback for one key. -
config get <key>: Read one config key. -
config edit [key]: Open the config editor, optionally focused on one supported field. -
config set <key> <value>: Write a TOML value into the config file and reload runtime config. -
config help: Show config command usage. -
vim: Open the selected source file in externalvim. -
!<shell command>: Run a local shell command. CRIEW uses the configured kernel tree as the working directory when one is available, otherwise it falls back toHOME.
- Suggested file:
images/keybindings-search.png - Suggested capture: Mail page with the search input active and filtered thread results visible.
-
/: Open search on the Mail page. -
Enter: Apply the current query. -
Backspace: Delete one character. -
Esc: Cancel search without applying the current edit. - Any printable character: Append to the current query.
- Suggested file:
images/keybindings-config-editor.png - Suggested capture: Left-side key list, right-side field details, and one field selected.
-
Upori: Move to the previous editable field. -
Downork: Move to the next editable field. -
Enterore: Start editing the selected field. -
Tab: Cycle through preset values for the selected field. -
x: Unset the selected key from the config file. -
Esc: Close the config editor.
- Any printable character: Append to the current TOML literal.
-
Backspace: Delete one character. -
Tab: Cycle preset values for the selected field. -
Enter: Save the current value. -
Esc: Cancel the edit and return to browse mode.
- Suggested file:
images/keybindings-reply-panel.png - Suggested capture: Reply panel with editable headers and the body guide line visible.
-
h: Move the cursor left. -
l: Move the cursor right. -
jorDown: Move to the next header field or the next body line. -
korUp: Move to the previous header field or the previous body line. -
i: Enter insert mode. -
Enteroro: Open a line below and enter insert mode. -
x: Delete the character under the cursor. -
p: Open Send Preview. -
s: Attempt to send. CRIEW still requires a confirmed Send Preview before it will actually send. -
:: Enter reply command mode. -
Esc: Close the reply panel when the draft is clean. If the draft is dirty, CRIEW tells you to use:q!to discard it.
- Any printable character: Insert at the cursor.
-
Backspace: Delete backward. -
Enter: Insert a newline. -
Tab: Insert four spaces. -
Esc: Return to reply normal mode.
- Any printable character: Append to the command line.
-
Backspace: Delete one character. -
Enter: Run the current command. -
Esc: Cancel command mode.
Supported reply commands are:
-
:qClose the reply panel only when the draft is clean. -
:q!Discard the reply draft. -
:previewOpen Send Preview. -
:sendAttempt to send the reply.
- Suggested file:
images/keybindings-send-preview.png - Suggested capture: Send Preview dialog with warning or confirmation text visible.
-
Enterorc: Confirm the current preview. -
s: Attempt to send. If preview confirmation is still missing, CRIEW opens a blocked-send notice instead. -
jorDown: Scroll preview down. -
korUp: Scroll preview up. -
Esc: Close Send Preview and return to the reply editor.
-
EscorEnter: Close the current notice. -
p: Reopen Send Preview when the notice asks for preview confirmation first. -
s: Send when the notice says preview confirmation already succeeded.
- Suggested file:
images/keybindings-inline-code-editor.png - Suggested capture: Source pane in inline edit mode with cursor and command hint visible.
- Start from the Code Browser page.
- Move focus to the
Sourcepane. - Press
efor inline editing orEfor externalvim.
-
h: Move cursor left. -
j: Move cursor down. -
k: Move cursor up. -
l: Move cursor right. -
i: Enter insert mode. -
x: Delete the character under the cursor. -
s: Save the current buffer. -
E: Open externalvim. -
:: Enter command mode. -
Esc: Exit edit mode only when the buffer is clean. If there are unsaved changes, CRIEW tells you to use:w,:wq, or:q!.
- Any printable character: Insert at the cursor.
-
Backspace: Delete backward or join with the previous line. -
Enter: Insert a newline. -
Tab: Insert four spaces. -
Esc: Return to normal mode.
- Any printable character: Append to the command line.
-
Backspace: Delete one character. -
Enter: Run the current command. -
Esc: Cancel command mode.
Supported inline editor commands are:
-
:wSave the current file. -
:qExit only when the buffer is clean. -
:q!Discard unsaved changes and exit inline edit mode. -
:wqSave and exit. -
:vimOpen the same file in externalvim.