Skip to content

Keybindings

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.

Scope

  • Key behavior is state-dependent. The same key can mean page toggle, completion, or indentation depending on the active modal surface.
  • ui.keymap affects 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.

Main pages

Suggested image slot

  • Suggested file: images/keybindings-main-pages.png
  • Suggested capture: Mail page and code-browser page with the header keymap label visible.

Shared page keys

  • :: 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": j and l move focus between panes. i and k move inside the focused pane. count+i and count+k repeat vertical movement.
  • ui.keymap = "vim": h and l move focus between panes. j and k move inside the focused pane. count+j and count+k repeat vertical movement. gg jumps to the top of the active pane. G jumps to the bottom. qq exits quickly.
  • ui.keymap = "custom": The header shows custom, but navigation still follows the default layout today.

The same navigation layer is reused on both top-level pages:

  • Mail page: focus moves between Subscriptions, Threads, and Preview.
  • Code Browser page: focus moves between Tree and Source.

Mail page

Suggested image slot

  • Suggested file: images/keybindings-mail-page.png
  • Suggested capture: Three-pane mail layout with one subscription selected, one thread selected, and preview content visible.

Mail workflow keys

  • /: Open thread search. Search is available only on the Mail page.
  • y: Enable the selected subscription. Works only when Subscriptions has focus.
  • n: Disable the selected subscription. Works only when Subscriptions has focus.
  • Enter on Subscriptions: Open the selected mailbox.
  • Enter on Threads: Select the current thread and move focus to Preview.
  • -: Select the previous thread while Preview keeps focus.
  • = or +: Select the next thread while Preview keeps focus.
  • e: Open the reply panel when Preview has 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 in ui-state.toml.
  • a: Apply the selected patch series. Works only when Threads has focus.
  • d: Download or export the selected patch series. Works only when Threads has focus.
  • u: Undo the last patch apply action. Works only when Threads has focus.

Code Browser page

Suggested image slot

  • 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.

Code browser keys

  • Main page navigation keys still apply here. They move between the tree and source panes, scroll source preview, and support count prefixes or gg and G when ui.keymap = "vim".
  • Enter on the tree pane: Expand or collapse directories. On files, keep the file selected and reset source scroll.
  • e on the source pane: Enter the inline code editor.
  • E on the source pane: Open the selected file in external vim.

Command palette

Suggested image slot

  • Suggested file: images/keybindings-command-palette.png
  • Suggested capture: Palette open with completion suggestions visible.

Input keys

  • Esc: Close the palette.
  • Enter: Run the current command.
  • Backspace: Delete one character.
  • Tab: Apply completion. A second Tab can expand or show the current completion set.
  • F1 or Ctrl+backtick: Toggle the palette closed again.

Built-in commands

  • quit or exit: 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 external vim.
  • !<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 to HOME.

Suggested image slot

  • Suggested file: images/keybindings-search.png
  • Suggested capture: Mail page with the search input active and filtered thread results visible.

Search keys

  • /: 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.

Config editor

Suggested image slot

  • Suggested file: images/keybindings-config-editor.png
  • Suggested capture: Left-side key list, right-side field details, and one field selected.

Browse mode

  • Up or i: Move to the previous editable field.
  • Down or k: Move to the next editable field.
  • Enter or e: 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.

Edit mode

  • 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.

Reply panel

Suggested image slot

  • Suggested file: images/keybindings-reply-panel.png
  • Suggested capture: Reply panel with editable headers and the body guide line visible.

Normal mode

  • h: Move the cursor left.
  • l: Move the cursor right.
  • j or Down: Move to the next header field or the next body line.
  • k or Up: Move to the previous header field or the previous body line.
  • i: Enter insert mode.
  • Enter or o: 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.

Insert mode

  • Any printable character: Insert at the cursor.
  • Backspace: Delete backward.
  • Enter: Insert a newline.
  • Tab: Insert four spaces.
  • Esc: Return to reply normal mode.

Command 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:

  • :q Close the reply panel only when the draft is clean.
  • :q! Discard the reply draft.
  • :preview Open Send Preview.
  • :send Attempt to send the reply.

Send Preview and reply notices

Suggested image slot

  • Suggested file: images/keybindings-send-preview.png
  • Suggested capture: Send Preview dialog with warning or confirmation text visible.

Send Preview keys

  • Enter or c: Confirm the current preview.
  • s: Attempt to send. If preview confirmation is still missing, CRIEW opens a blocked-send notice instead.
  • j or Down: Scroll preview down.
  • k or Up: Scroll preview up.
  • Esc: Close Send Preview and return to the reply editor.

Reply notice keys

  • Esc or Enter: 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.

Inline code editor

Suggested image slot

  • Suggested file: images/keybindings-inline-code-editor.png
  • Suggested capture: Source pane in inline edit mode with cursor and command hint visible.

Entry conditions

  • Start from the Code Browser page.
  • Move focus to the Source pane.
  • Press e for inline editing or E for external vim.

Normal mode

  • 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 external vim.
  • :: 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!.

Insert mode

  • 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.

Command 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:

  • :w Save the current file.
  • :q Exit only when the buffer is clean.
  • :q! Discard unsaved changes and exit inline edit mode.
  • :wq Save and exit.
  • :vim Open the same file in external vim.

See also