Skip to content

Bindings

C- means Control; M- means reported Alt/Meta or a compatible Escape prefix. Spaces separate successive chords: C-x C-s means Control-x, then Control-s. In the default non-modal profile, editing is Emacs-like and ordinary printable text inserts directly. These editing bindings apply while an editing window owns focus; tree, prompt and inventory focus have their own keys. See Terminal input for reports and physical-terminal limits, and Focused prompts for argument and decision keys.

Every command below is also available as M-x followed by its exact name.

Keys Command Result
M-x execute-extended-command Find and invoke a command.
M-x lsp-mode lsp-mode Toggle optional owned server transport for this session.
M-x lsp-connect lsp-connect Restore this buffer eligibility without enabling globally disabled LSP.
M-x lsp-disconnect lsp-disconnect Exclude this canonical buffer across all its views until restored or closed.
M-x lsp-restart lsp-restart Restart the eligible current root; preserve global mode and buffer exclusions.
M-x lsp-status lsp-status Show the current file transport state or recoverable prerequisite failure.
M-x lsp-setup lsp-setup Register an installed server, acquire a supported managed recipe, or select a compatible source.
M-x lsp-reload-settings lsp-reload-settings Reload only LSP settings and file associations, preserving runtime mode, exclusions and startup profile.
M-x lsp-servers lsp-servers Open a read-only snapshot of configured sources, local executable availability and managed recipe prerequisites.
M-x lsp-select-server lsp-select-server Persist a compatible configured source, ready managed installation or native-only choice.
M-x lsp-install-server lsp-install-server Acquire and verify a managed catalog recipe, or select a ready installation; preserve runtime LSP mode.
M-x lsp-update-server lsp-update-server Verify a replacement before retargeting selected managed profiles; retain the old payload.
M-x lsp-remove-server lsp-remove-server Remove a confirmed installer-owned payload only when unreferenced and stopped.
M-x lsp-cancel-installation lsp-cancel-installation Request active management cancellation while its worker retains cleanup ownership.
M-x completion-mode completion-mode Toggle native completion for this session.
M-x completion-auto-mode completion-auto-mode Toggle automatic requests while retaining explicit invocation.
M-TAB completion-at-point Show native suggestions near the source cursor.
Down, C-n in a completion popup completion-next Select the next candidate without moving source point.
Up, C-p in a completion popup completion-previous Select the previous candidate.
Tab or Return in a completion popup completion-accept Replace the admitted identifier as one undo operation.
Escape or C-g in a completion popup completion-cancel Dismiss the popup without editing source.
C-g keyboard-quit Cancel the current interaction or deactivate the region.
C-x C-c save-buffers-kill-terminal Guarded session exit.
C-x C-f find-file Open a file or directory; available in editing and tree focus.
C-x C-s save-buffer Save to the current destination.
C-x C-w write-file Request another destination.
M-x revert-buffer, :revert-buffer revert-buffer Reload a checked disk image; confirm before discarding unsaved text.
M-x ai-explain, :ai-explain ai-explain Explain the captured selection with guarded directory context and compatible private Pi history.
M-x ai-prompt, :ai-prompt ai-prompt Ask for an instruction; show selection replacement or point insertion before generation.
M-x ai-implement, :ai-implement ai-implement Ask for an instruction for the captured insertion point.
M-x ai-apply-result, :ai-apply-result ai-apply-result Apply the selected proposal once to its original checked target.
M-x ai-discard-result, :ai-discard-result ai-discard-result Discard the pending result without editing source.
M-x ai-set-directory, :ai-set-directory ai-set-directory Choose a session-local AI context root.
M-x ai-select-model, :ai-select-model ai-select-model Choose a Pi-reported provider/model for this editor session.
M-x ai-reset-session, :ai-reset-session ai-reset-session Start fresh owned history on the next explicit invocation.
M-x ai-disconnect, :ai-disconnect ai-disconnect Stop the owned child and retain private history/results.
M-x ai-cancel, :ai-cancel ai-cancel Cancel the active invocation or AI-owned input/result.
M-x ai-save-command, :ai-save-command ai-save-command Save the successful literal instruction as a reusable command.
M-! (non-modal), M-x shell-command, :shell-command shell-command Prompt for an explicit one-shot shell command with null stdin and bounded retained output.
M-| (non-modal), M-x shell-command-on-region, :shell-command-on-region shell-command-on-region Send the captured nonempty linear region as bounded stdin data and retain complete output without changing source.
C-u M-| (non-modal), M-x shell-filter-region, :shell-filter-region shell-filter-region Replace the captured nonempty linear region with complete successful stdout as one checked edit.
C-u M-! (non-modal), M-x shell-command-insert, :shell-command-insert shell-command-insert Insert complete successful stdout at the point captured before the prompt, with null stdin.
M-x shell-command-cancel, :shell-command-cancel shell-command-cancel Cancel the owned invocation; originating editing C-g also cancels after inner input owners.
M-x shell-command-output, :shell-command-output shell-command-output Visit the last retained read-only plain-text result or diagnostics.
Return in History git-show-range Compare the marked exact base and selected endpoint in their explicit order.
P in History git-cherry-pick Review exact ordered revisions and explicit merge mainlines before applying them.
V in History git-revert Review exact ordered revisions and explicit merge mainlines before reverting them.
a in History git-sequence-mark Append an exact ordered revision without changing the range base.
U in History git-sequence-unmark Remove an ordered revision, retaining remaining order and the base.
l r in Status git-reflog Inspect bounded exact HEAD reflog entries.
B b, B B in Status git-blame Attribute the selected or visiting source at checked HEAD.
h, l l in Status git-log Open exact bounded ancestry; detached HEAD collects an explicit root.
Tab in History; M-x git-show, :git-show git-show Inspect full revision metadata, changed paths and exact parent comparison.
f in History git-log-next-page Continue exact ancestry from its pinned root.
M-x git-commit-amend git-commit-amend Prepare exact observed HEAD composition, then explicitly review the replacement commit.
M-x git-commit-fixup git-commit-fixup Resolve one exact target, compose its fixup body and review before submission.
c in Git Status git-commit Open native commit text directly; a subsequent c is literal message text.
C-Enter, C-c C-c in composer git-commit-submit Submit the active native composer; prepared arguments require checked review before execution.
C-g, C-c C-k in composer git-commit-cancel Cancel before process start; retain commit/tag drafts and restore the source owner.
C-x g, M-x git-status, :git-status git-status Discover the current repository and open full-canvas native Status.
q in Git git-quit Dismiss the innermost menu or return to the retained editing context; owned work continues.
k, x d in Git Status or Diff git-discard Confirm one tracked unstaged whole path from its index; protect dirty visiting buffers.
*, x m in Git Status or Diff git-mark Mark one exact current path or supported hunk independently of navigation.
-, x u in Git Status or Diff git-unmark Remove the exact selected path or hunk mark.
0, x c in Git Status or Diff git-unmark-all Clear all retained path and hunk marks.
s in Git Status or Diff git-stage Stage the exact selected path, supported text hunk or complete compatible marked group; unsaved source text is retained.
u in Git Status or Diff git-unstage Unstage the exact selected staged path, supported text hunk or complete compatible marked group without changing working files.
g in Git git-refresh Request a replacement observation; retain confirmed Status on failure.
Tab in Git git-toggle-section Collapse or expand the selected Status group, path comparison or semantic hunk.
? in Git git-dispatch Show the available native Git actions.
$ in Git, M-x git-processes, :git-processes git-processes Inspect active and recent owned operations without cancelling them.
Return in Status or Diff git-visit-file Visit the canonical current source, preserving an existing modified buffer.
M-x git-process-show, :git-process-show; Return in Processes git-process-show Inspect the selected operation; the Return binding dispatches through git-visit-file.
M-x git-diff, :git-diff git-diff Inspect the exact selected comparison as read-only detail.
C-g in Processes or process detail, M-x git-process-cancel git-process-cancel Cancel the selected live operation through its exact identity; menus and prompts keep first refusal.
M-x terminal-open, :terminal-open terminal-open Open or select the instance default interactive terminal in the lower panel.
M-x terminal-toggle, :terminal-toggle terminal-toggle Hide or restore the lower terminal panel without restarting the child.
M-x terminal-new-buffer, :terminal-new-buffer terminal-new-buffer Create an independent terminal directly in the selected editing pane.
M-x terminal-move-to-buffer, :terminal-move-to-buffer terminal-move-to-buffer Move the current terminal into the selected editing pane.
M-x terminal-move-to-panel, :terminal-move-to-panel terminal-move-to-panel Dock the same session in the lower panel.
M-x terminal-new, :terminal-new terminal-new Create an independent lower-panel session.
M-x terminal-list, :terminal-list terminal-list Select or inspect retained terminal sessions.
M-x terminal-rename, :terminal-rename terminal-rename Give the selected terminal buffer a unique name without changing its identity.
M-x terminal-open-here, :terminal-open-here terminal-open-here Create a session from the current resource's directory context.
M-x terminal-open-other-pane, :terminal-open-other-pane terminal-open-other-pane Select a terminal in the next pane, creating a right split when needed.
C-q in live terminal input, M-x terminal-send-next-key terminal-send-next-key Send one following normalized key literally to the child, bypassing host recovery.
C-c C-t in live terminal input, M-x terminal-copy-mode terminal-copy-mode Freeze retained output for native navigation, selection and search.
Return in terminal copy mode, M-x terminal-copy-mode-done terminal-copy-mode-done Resume live input without sending Return to the child.
C-y in live input, M-x terminal-yank terminal-yank Paste the newest retained text using active bracket framing.
M-y in live input, M-x terminal-yank-pop terminal-yank-pop Rotate only while the preceding paste remains wholly queued.
M-x terminal-clear terminal-clear Send C-l through ordinary child input.
M-x terminal-clear-scrollback terminal-clear-scrollback Clear retained history and copy projections, preserving live screen/input.
M-x terminal-beginning-of-line terminal-beginning-of-line Move to the frozen copy line start.
M-x terminal-end-of-line terminal-end-of-line Move to the frozen copy line end.
M-x terminal-reset-cursor-point terminal-reset-cursor-point Align copy point with a still-represented live cursor.
M-x terminal-undo terminal-undo Send C-_ to the child without source undo.
M-x terminal-send-return terminal-send-return Send Return with the live mode-aware VT encoder.
M-x terminal-send-tab terminal-send-tab Send Tab with the live mode-aware VT encoder.
M-x terminal-send-escape terminal-send-escape Send Escape with the live mode-aware VT encoder.
M-x terminal-send-backspace terminal-send-backspace Send Backspace with the live mode-aware VT encoder.
M-x terminal-send-delete terminal-send-delete Send Delete with the live mode-aware VT encoder.
M-x terminal-send-up terminal-send-up Send Up with the live mode-aware VT encoder.
M-x terminal-send-down terminal-send-down Send Down with the live mode-aware VT encoder.
M-x terminal-send-left terminal-send-left Send Left with the live mode-aware VT encoder.
M-x terminal-send-right terminal-send-right Send Right with the live mode-aware VT encoder.
M-x terminal-send-prior terminal-send-prior Send PageUp with the live mode-aware VT encoder.
M-x terminal-send-next terminal-send-next Send PageDown with the live mode-aware VT encoder.
M-x terminal-send-space terminal-send-space Send Space with the live mode-aware VT encoder.
M-x terminal-next-prompt terminal-next-prompt Navigate the next captured OSC 133 prompt.
M-x terminal-previous-prompt terminal-previous-prompt Navigate the previous captured OSC 133 prompt.
M-x terminal-next-error terminal-next-error Visit an actually recognized retained error location.
M-x terminal-open-link terminal-open-link Explicitly activate the validated link at live or frozen point.
C-x b switch-to-buffer Select a live buffer by name.
C-x C-b list-buffers Select from the live buffer inventory.
C-x k kill-buffer Close a buffer with modified-text protection.
C-x 2 split-window-below Split into upper/lower views.
C-x 3 split-window-right Split into left/right views.
C-x o other-window Cycle editing views.
C-x 0 delete-window Close the selected view, retaining its buffer.
C-x 1 delete-other-windows Keep only the selected view.
M-x windmove-left windmove-left Focus the nearest overlapping pane to the left.
M-x windmove-down windmove-down Focus the nearest overlapping pane below.
M-x windmove-up windmove-up Focus the nearest overlapping pane above.
M-x windmove-right windmove-right Focus the nearest overlapping pane to the right.
M-x balance-windows balance-windows Equalize existing pane divisions, preserving focus and startup split policy.
Return newline Insert the buffer's preferred line separator.
Tab insert-tab Insert indentation; default spaces advance to the next four-column stop.
Backspace backward-delete-char Delete the preceding grapheme.
Delete, C-d delete-char Delete the following grapheme.
Right, C-f forward-char Move over one grapheme.
Left, C-b backward-char Move back one grapheme.
M-f forward-word Move to the next word end.
M-b backward-word Move to the preceding word start.
Home, C-a move-beginning-of-line Move to visual line start when wrapped, otherwise logical line start.
End, C-e move-end-of-line Move to visual line end when wrapped, otherwise logical line end.
M-< beginning-of-buffer Move to buffer start.
M-> end-of-buffer Move to buffer end.
M-g g, M-g M-g goto-line Prompt for a one-based logical line; M-g alone is a prefix.
Down, C-n next-line Move down one visual row when wrapped, otherwise one logical row; retain the intended display column.
Up, C-p previous-line Move up one visual row when wrapped, otherwise one logical row; retain the intended display column.
Page Down, C-v scroll-up-command Advance one page.
Page Up, M-v scroll-down-command Move back one page.
C-l recenter-top-bottom Cycle point's line through center/top/bottom.
C-x u, reported C-/ or C-_ undo Undo a buffer-local group.
M-x undo-redo undo-redo Reapply the next redo group.
M-x tabify tabify Compress the marked whitespace at effective tab stops when shorter.
M-x untabify untabify Expand marked literal tabs while preserving text columns.
M-x mouse-mode mouse-mode Toggle native pointer support for this session without writing settings.
M-x visual-line-mode visual-line-mode Toggle word-aware wrapping for this buffer and all its views without changing source or settings.
M-x gutter-toggle-line-numbers gutter-toggle-line-numbers Hide or restore numbers, retaining mode.
M-x gutter-cycle-line-number-mode gutter-cycle-line-number-mode Alternate absolute and relative, retaining visibility.
M-x gutter-set-line-numbers-absolute gutter-set-line-numbers-absolute Show absolute logical line numbers.
M-x gutter-set-line-numbers-relative gutter-set-line-numbers-relative Show distances from this view's logical point.
M-x gutter-cycle-current-line gutter-cycle-current-line Cycle absolute, zero and hidden current labels.
M-x gutter-toggle-line-number-side gutter-toggle-line-number-side Move this view's number field left or right.
M-x gutter-inspect-numbering gutter-inspect-numbering Report effective policy and startup/view override sources.
M-x gutter-reset-numbering gutter-reset-numbering Restore this view's immutable startup policy.
C-s isearch-forward Incremental literal forward search.
C-r isearch-backward Incremental literal backward search.
M-% query-replace Confirm each literal replacement.
C-SPC set-mark-command Activate a linear region at point.
C-x C-x exchange-point-and-mark Exchange point and mark.
C-k kill-line Kill to logical line end, then its separator.
M-d kill-word Kill toward the next word end.
M-Backspace / M-DEL backward-kill-word Kill toward the preceding word start.
C-w kill-region Remove the active linear region into the ring.
M-w kill-ring-save Copy the active linear region.
C-y yank Insert the newest linear ring entry.
M-y yank-pop Rotate the current yank's exact insertion range.
C-x SPC rectangle-mark-mode Toggle display-column selection.
C-x r m bookmark-set Name or replace the current file position.
C-x r M bookmark-set-no-overwrite Name the current position without replacement.
C-x r b bookmark-jump Complete a name and visit its checked location.
M-x bookmark-delete bookmark-delete Complete a name and remove that bookmark.
C-x r l list-bookmarks Open the read-only native bookmark list.
d in bookmark list bookmark-bmenu-delete Mark the selected record for deletion and advance.
u in bookmark list bookmark-bmenu-unmark Unmark the selected record and advance.
x in bookmark list bookmark-bmenu-execute-deletions Execute checked marked deletions.
RET in bookmark list bookmark-bmenu-this-window Visit the selected stable record in this pane.
M-x bookmark-next bookmark-next Visit the next resolved current-file record, wrapping and stepping same-position names.
M-x bookmark-previous bookmark-previous Visit the previous resolved current-file record in source/name order.
M-x bookmark-markers-mode bookmark-markers-mode Toggle marker visibility for the selected editing view.
M-x bookmark-save bookmark-save Checkpoint the user collection without saving sources.
M-x bookmark-reload bookmark-reload Validate disk and confirm replacing unsaved bookmarks.
C-x r M-w copy-rectangle-as-kill Retain selected rectangle rows.
C-x r k kill-rectangle Remove and retain the rectangle as one edit.
C-x r y yank-rectangle Insert retained rows with required padding.
C-x t t toggle-file-tree Show or hide the left tree.
C-x t f focus-file-tree Focus the visible tree.
Up, C-p in tree tree-previous-line Select the preceding visible entry.
Down, C-n in tree tree-next-line Select the next visible entry.
Right, C-f in tree tree-expand Lazily expand a directory.
Left, C-b in tree tree-collapse Collapse or select the parent.
M-x tree-toggle-directory tree-toggle-directory Toggle a directory; leaves report an error.
C-x t r tree-refresh Reload already opened tree branches.
Return in tree, C-x t o tree-open Open a file or toggle a directory.
C-x t n tree-create-file Create an empty file at the selected directory.
C-x t d tree-create-directory Create a directory at the selected directory.
C-x t R tree-rename Rename one entry and reconcile visited paths.
C-x t D tree-delete Confirm removal, including separate recursive consent.

Tab or C-g returns from tree focus to editing. The tree is separate from editing-window cycling. In the buffer inventory, use arrows, Home/End, Return or C-g. In a decision, use a fresh y or n; query-replace also accepts q. Paste and Return do not grant affirmative consent.

See Commands for matching, completion and command history, Rectangles for block edges and Scope and defaults for retained text, history and file behavior.

Supplied layout and scrolling preferences

Startup configuration and library sessions supplied with an admitted snapshot use scroll.page_overlap to compute page distance from the current pane's content height. Usable panes advance at least one row even when overlap exceeds that height; suspended pages retain point. The default overlap remains two rows.

windows.split_ratio prefers the first child's share of the available extent after its one-cell separator. Both axes and native panel composition use the same ratio, clamped to each subtree's complete recursive minima. Small resizes suspend the entire editing projection and retain view identities and history. The default remains equal halves. Executable startup uses the admitted user configuration snapshot; source edits take effect after restarting.

Global Org entry keys include C-c a (agenda), C-c c (capture) and C-c l (store link). See Org bindings for those keys, all Org commands and the source, draft, agenda and calendar contexts.

Modal startup profile

Select editor.interaction_profile = "modal" and restart for Vim-like editing. Modal editing starts in Normal; unmatched text and bracketed paste do not insert there. Non-modal editing remains the default. Choose Modal Editing walks through profile selection, ordinary edits, shapes and shared command entry. The following state commands require the modal startup profile:

Input Command Result
i in Normal modal-enter-insert Enter Insert at point.
R in Normal modal-enter-replace Enter persistent Replace with an underline cursor.
. in Normal modal-repeat-last-change Resolve and repeat the latest admitted semantic change; a count overrides its count.
a in Normal modal-enter-insert-after Enter Insert after the current grapheme, stopping at logical EOL.
I in Normal modal-enter-insert-line-first Enter Insert at the first non-whitespace boundary.
A in Normal modal-enter-insert-line-end Enter Insert at logical EOL.
o in Normal modal-open-line-below Open one logical line below and enter Insert.
O in Normal modal-open-line-above Open one logical line above and enter Insert.
v in Normal or Visual modal-enter-visual-character Select the current grapheme, convert shape or leave a repeated Character state.
V in Normal or Visual modal-enter-visual-line Select complete logical lines, convert shape or leave a repeated Line state.
C-v in Normal or Visual modal-enter-visual-block Select inclusive logical grapheme columns, convert shape or leave a repeated Block state.
C-o in Insert modal-one-normal-command Admit one complete Normal command, then resume compatible insertion.
Escape or C-[ in modal editing modal-enter-normal Return to Normal, preserving the native point.

Insert and Replace use native editing and compatible modified factory bindings. Normal retains M-x, C-g, Meta commands and C-x/C-c command prefixes. State changes alone create no history; opening a line creates one ordinary undoable edit. Local prompts, completion, tree and Org maps keep their input priority. In a modal component, Escape or C-[ invokes the same cancellation as C-g after bounded Alt/Meta recognition; a second Escape cancels immediately.

Replace and semantic repetition

R overwrites corresponding complete graphemes on the current logical line. At EOL it inserts before the existing LF/CRLF separator; it never consumes that separator. Input that joins the preceding grapheme extends it without consuming another source grapheme. Escape/C-[ returns to Normal at the native point. Connected Insert/Replace input and a preceding change or line opening share one ordinary undo/redo group. Modified movement or another command ends that group.

Dot retains one semantic entry, operator, direct edit, indentation or paste. Entries i/a/I/A/o/O/R resolve their entry destination again. Operators resolve their motion/object against current source. An explicit dot count replaces the recorded count; it does not multiply it. Inserted payload is expanded within the native 64-MiB materialization bound before publication. Dot stays Normal and creates one ordinary native transaction.

A completed record is usable in another compatible editing pane or buffer. It checks current focus, source point, target and permissions before mutation. A failed repeat preserves the record. Undo/redo and copying text do not replace it. A retained paste keeps its admitted linear, linewise or logical-block payload, so a later copy cannot change the repeated insertion. Visual repetition retains its grapheme count, line count or block height/width, anchored at current point. For a Visual record, an explicit count replaces the linear/line count or block width; height remains fixed for a block.

At most 1,024 text bytes are retained, including the complete paste payload. Overflow never rejects an otherwise valid edit or exposes a truncated replay; it makes that change unavailable to dot. The native history budget still owns undo data. An empty insertion entry keeps the prior record. External source/view changes retire unfinished entries. Destructive entry controls that cannot be represented as the retained insertion, source-bound accepted-search ranges and unrelated native command workflows remain ordinary edits and retire repetition. Prompts, file consent and provider work are never replayed.

Commands, panes and completion

In Normal and all Visual shapes, : opens the same vertical selector as M-x. Use full canonical names such as :split-window-right, then answer any native argument prompt. Matching, history, completion, availability and dispatch are shared. Colon supplies no Ex aliases, ranges, pipelines or trailing arguments. Escape or C-g cancels the selector. Cancellation retains a compatible Visual shape and native anchor; changed source, point, mark or selected view retires that selection instead of restoring stale positions. Insert, Replace and argument prompts keep literal colon/slash text.

The Normal/Visual pane prefix is C-w: h/j/k/l focus left/down/up/right, s/v split below/right, c closes the selected pane, o keeps only that pane and = balances existing divisions. Directional focus requires orthogonal overlap and chooses the nearest pane, using native screen order for equal distances. No neighbor is a no-op. Balancing reserves separators, shares same-axis pane extents and preserves topology, focus, source and the startup ratio for later splits.

Automatic source suggestions run only in Insert/Replace. Manual completion-at-point remains available through the shared catalog. Popup arrows, C-p/C-n, Tab/C-i and Return retain native actions and colored kinds; source syntax colors remain visible. Checked primary edits and imports form one undo operation. Escape/C-g dismisses the popup locally before a later editing Escape returns to Normal. Incompatible state/view/source transitions retire list and resolve work; a late reply cannot reopen the popup or publish an edit. Insert C-o waits through an asynchronous completion workflow before resuming compatible insertion.

Tree, search, argument/decision prompts, inventories, bookmarks and local Org maps retain priority over editing grammar. Org source drafts use the immutable session profile with native local save and abort controls. Cancelling their command selector leaves the outer draft active. Bracketed paste remains literal text in entry states and never starts automatic completion.

Normal navigation

These bindings resolve one checked native destination. The same named commands are available through M-x in either startup profile. Emacs factory keys keep their existing visual-line and native word behavior.

Input Command Destination
h, Left modal-backward-char Previous whole grapheme, including a whole LF/CRLF boundary.
l, Right modal-forward-char Next whole grapheme, including a whole LF/CRLF boundary.
j, Down modal-next-line Next logical line; retain desired terminal-cell column and skip hidden Org bodies.
k, Up modal-previous-line Previous logical line; retain desired terminal-cell column and skip hidden Org bodies.
0 modal-line-start Logical line start.
^ modal-line-first-text First non-whitespace grapheme of the logical line.
$ modal-line-end Logical content-end boundary before LF/CRLF. A count selects the corresponding following logical line.
w modal-next-word-start Start of the next word or punctuation run, skipping whitespace.
b modal-previous-word-start Previous Unicode word start, skipping punctuation.
e modal-next-word-end Next Unicode word's exclusive end boundary, skipping punctuation.
W modal-next-big-word-start Next start of a whitespace-separated WORD.
B modal-previous-big-word-start Previous start of a whitespace-separated WORD.
E modal-next-big-word-end Exclusive end of the next whitespace-separated WORD.
g e modal-previous-word-end Exclusive end of the preceding Unicode word, excluding the run containing the point's predecessor.
g E modal-previous-big-word-end Exclusive end of the preceding WORD, excluding the run containing the point's predecessor.
g g modal-buffer-start Start of buffer; with a count, start of that one-based logical line.
G modal-buffer-end End of buffer; with a count, start of that one-based logical line.
f modal-find-forward Counted next occurrence of one Unicode scalar within the logical line; land on its grapheme start.
F modal-find-backward Counted previous occurrence of one Unicode scalar within the logical line; land on its grapheme start.
t modal-till-forward Grapheme immediately before the counted next occurrence.
T modal-till-backward Grapheme immediately after the counted previous occurrence.
; modal-repeat-find Repeat the last successful find in its original direction; till skips its prior match.
, modal-reverse-find Repeat the last successful find in the opposite direction; retain the original repeat direction.
{ modal-previous-paragraph Previous empty/whitespace-only logical-line boundary, clamped to BOF.
} modal-next-paragraph Next empty/whitespace-only logical-line boundary, clamped to EOF.
% modal-matching-delimiter Match the first parenthesis, bracket or brace at/after point on this logical line; respect nested pairs of the same kind. Missing mates preserve point.
PageDown, C-f modal-page-forward Full-page forward through native geometry and page overlap.
PageUp, C-b modal-page-backward Full-page backward through native geometry and page overlap.
C-d modal-half-page-forward Half-page forward.
C-u modal-half-page-backward Half-page backward; a local Org prefix beginning with C-u owns that key in Org editing.
H modal-screen-top Top displayed text row; count inward from the top.
M modal-screen-middle Middle displayed text row, including wrapped fragments and folds.
L modal-screen-bottom Bottom displayed text row; count inward from the bottom.
z t modal-align-top Align point at the viewport top without moving it.
z z modal-align-middle Align point at the viewport middle without moving it.
z b modal-align-bottom Align point at the viewport bottom without moving it.
/ modal-search-forward Open the shared forward literal search prompt.
? modal-search-backward Open the shared backward literal search prompt.
n modal-search-repeat Continue the confirmed search in its original direction.
N modal-search-reverse Continue the confirmed search in the opposite direction.
* modal-search-word-forward Search forward for the Unicode word at point with complete word boundaries.
# modal-search-word-backward Search backward for the Unicode word at point with complete word boundaries.

The shared h/l, logical line, 0/^/$, w/b/e and gg/G endpoints follow the inspected Odra behavior. In particular e is an insertion boundary after the word. The WORD, ge/gE and counted forms above are additional rev requirements. w on one 🙂two reaches the emoji; e on one !!! two reaches the boundary after one, then after two on its next invocation.

A decimal count starts with 1–9; following zeroes extend it, while standalone 0 remains logical start. The ceiling is 4,294,967,295 and pending grammar is limited to 16 strokes. Targets retain one Unicode scalar (at most four UTF-8 bytes, within the 96-byte target bound). Counts scan the finite source or resolve a projected destination; they do not repeat UI commands. Overflow, missing counted finds/searches and stale observations preserve point and text. Idempotent start/first-text, delimiter, middle-row and alignment targets retain their single-target meaning with a count. Counts on unrelated commands reject. Explicit local digit mappings own the start of a command; digits following an admitted count extend that count. M-x cancels pending syntax and opens native command entry.

Escape/C-[, C-g, paste or a changed view/buffer/revision/point retire pending syntax. A retained find or search continuation is qualified by its native view and source revision. Search keeps literal smart-case matching, no wrapping and its native endpoint policy: forward lands after the match, backward at its start. C-g during search restores the complete origin view. A confirmed native C-s/C-r search also supplies n/N; prompts retain their own key meanings.

Normal operators and transfer

Input Command Result
d modal-delete Delete one checked target into the shared kill ring.
c modal-change Retain/delete the target, then enter Insert after successful publication.
y modal-copy Copy the target to the shared kill ring without editing or moving point.
> modal-indent Indent each intersecting logical line by one active indentation unit.
< modal-outdent Outdent each intersecting logical line by one active indentation unit.
D modal-delete-line-end Delete through the logical content-end boundary; a count selects following lines.
C modal-change-line-end Change through the logical content-end boundary, then enter Insert.
Y modal-copy-line-end Copy through the logical content-end boundary, retaining linear shape.
x modal-delete-forward Delete counted whole graphemes within this logical line, preserving retained text.
X modal-delete-backward Delete counted preceding whole graphemes within this logical line, preserving retained text.
r modal-replace-character Replace counted complete graphemes within this logical line with one printable Unicode scalar.
p modal-paste-after Paste retained text after the current grapheme, or after this logical line for linewise text.
P modal-paste-before Paste retained text at point, or before this logical line for linewise text.
J modal-join-lines Join at least two logical lines (count selects total lines), stripping leading indentation and inserting needed spaces.

u and C-r invoke ordinary undo and redo. Prefix commands d/c/y/>/< require modal Normal; completed semantic edit requests and standalone edit commands use the same native range/edit owners. Pending operators never move point or edit. Escape/C-[, C-g, M-x, paste or changed native source/view/point retire them.

A count before an operator multiplies a count before its target, using checked u32 arithmetic. 2d3w resolves six word starts and publishes one deletion/undo. dd, cc, yy, >> and << select counted complete logical lines. A line change preserves an empty logical insertion slot; changing an empty valid interior can enter Insert without an edit. Failed or read-only changes stay in their prior state and preserve retained text. Copy remains usable read-only.

Character and word operator ranges use the native half-open interval between origin and destination. Thus dw on one two removes one , while de removes one and preserves its following separator. Shared f/F/t/T endpoints also retain this Odra range policy: dfX on abcXdef retains abc and leaves Xdef; the matched target is not implicitly added. Logical line/file/page, visible-row and paragraph motions select complete intersecting source lines. Missing counted finds or absent objects publish nothing. Alignment commands do not select an operator range.

Text objects are iw/aw, iW/aW, ip/ap, and inner/around parentheses, brackets, braces, single/double quotes and backticks. Both opening and closing pair spellings are aliases. Word objects select Unicode word/punctuation runs; WORD objects use whitespace-separated runs. Around word includes following whitespace, falling back to preceding whitespace at the end. Counts include following runs. Paragraphs select connected logical lines; around includes adjacent blank lines. Pair counts select successive enclosing balanced pairs; quote counts extend through successive quoted pairs on the logical line. Backslash escaping is respected without introducing a language parser.

Operator / and ? use the existing search prompt while point remains at its origin. Return applies the complete native search endpoint once; C-g cancels. Confirmed n/N and */# targets reuse the shared literal matcher and its existing smart-case, nonwrapping policy.

Linewise intent lives in the existing bounded kill ring. yy, linewise delete and change retain complete logical text, including its actual terminators. p/P normalize a linewise entry to the destination newline convention and add only necessary separators at EOF. Linear paste retains the native yank endpoint after inserted text; linewise paste places point at the inserted line start. Native yank/yank-pop and modal paste share entries; no modal register is added. Compatible consecutive kills of the same shape follow kill_ring.coalesce; a changed shape starts a fresh entry. Small x/X deletion and r replacement preserve the previous entry. Repeated paste/replacement composes one prepared edit; count-expanded text is bounded to 64 MiB before allocation. An ordinary single transfer keeps native admission. Indentation and multi-line joining are one prepared batch and one undo unit.

Jump history and Insert continuation

Input in Normal Command Result
C-o modal-jump-backward Revisit an older checked location, with an optional count.
C-i or Tab modal-jump-forward Revisit a newer checked location, with an optional count.

Each view retains at most 256 session-only locations. A split copies that bounded history and traversal index, then each view branches independently. Closing a view releases its handles. Explicit buffer/line, paragraph and page/screen destinations, accepted literal searches and native file visits record qualified origins and destinations. Ordinary h/j/k/l, word steps, search previews, drawing and jump traversal do not add entries. Counts clamp by retained entries, without replaying primitive commands. Starting backward traversal refreshes the newest current point; older entries keep their rebased locations. A new admitted jump after moving back removes that view's forward branch. Failed navigation/traversal changes no index.

Live locations follow native prepared edits, structural permutations and undo/redo. Deleting an anchor or joining away its grapheme boundary makes it unavailable; native undo can restore recorded outcomes. Traversal reuses an existing canonical buffer, including its unsaved text and read-only state. A closed file can reopen only when native file identity/content/permission observations, the exact retained position and up to 64 source scalars on each side still agree. Missing, replaced, changed, stale or non-file closed targets reject without guessing another position. Canonical rename carries closed paths, and save/close retains the live file identity. Paths have the native 4096-byte limit. Jump state never reads/writes bookmark names, collections or persistence; a later linear/selection edit remains ordinary history.

In Insert, C-o enters Normal for one semantic command. Counts, pending operators, find characters, command selection and argument/search prompts belong to that one lifetime. Compatible completion returns to Insert at the checked native point, including after an admitted edit. A different view/buffer or unrelated source revision retires insertion authority; explicit Visual entry keeps its new state. Queued input after deferred layout is interpreted after the command's state transition. Native prompts/completion keep their own Tab/C-i action; non-modal bindings and ordinary Insert Tab remain unchanged.

Visual selections

Visual states use the buffer's shared mark and the selected view's native point. Character includes the destination grapheme, including a whole LF/CRLF cluster; EOF itself contributes no extra text. Line includes complete logical source lines between both endpoints. Normal motions, counts, finds and shared literal search extend these selections. o uses exchange-point-and-mark to move the active end; repeated shape entry, Escape/C-[ or C-g cancels presentation.

d, c and y apply immediately to the selected character, line or block range. Delete and copy return to Normal; change enters Insert after successful native admission. All affected rows publish as one edit and one ordinary undo/redo step. Read-only or rejected targets preserve selection, prior transfer and history. Linear Visual >/< indents/outdents every intersecting logical line and returns to Normal. Text object entry is deliberately limited to linear Visual iw, aw, ip and ap; selecting an object sets Character endpoints around that object.

Input in linear Visual Command Result
i then w or p modal-select-inner-object Select a counted inner word or paragraph through native endpoints.
a then w or p modal-select-around-object Select a counted word or paragraph with its surrounding whitespace.

Visual Block counts each source grapheme once: a tab, wide character or joined cluster occupies one logical column. Both endpoint columns are included. Existing short rows contribute only their actual text, and line separators are excluded. Drawing projects the selected glyphs back to their actual display cells, including the full tab stop. non-modal rectangles retain display-cell edges and partial-tab padding. See rectangle coordinate and transfer policies.

Block transfer keeps native rectangle rows and logical-column intent in the shared transfer entry; its linear text view joins those rows with LF. p/P reinsert the block across logical rows, padding short destinations on the left and preserving LF/CRLF when extending EOF. Counts repeat each retained row horizontally within the existing 64-MiB expanded-text bound. Native yank-rectangle can use the same retained block. A later linear kill/copy selects linear paste again; native yank/yank-pop retain their linear span policy.

A different view of the same unchanged buffer can retain the shared selection. Switching buffers or publishing a source revision retires Visual authority. Pointer drag replaces the shared anchor while retaining the active shape; folding, wrapping and resize affect projection without making a separate range.

For live terminal key ownership and copy controls, see the integrated terminal reference.

Native refs bindings

Keys Command Behavior
=, m f in Refs git-merge-fast-forward Review one exact target and require fast-forward-only integration.
i, m m in Refs git-merge Review merge with fast-forward allowed.
I, m n in Refs git-merge-no-fast-forward Review merge-commit policy.
e, r r in Refs git-rebase Review ordinary rebase onto the selected exact commit.
E, r a in Refs git-rebase-autosquash Review the finite ordered source plan before autosquash.
m c in Refs; > in Operation git-merge-continue Refresh and confirm continuation of a compatible merge.
m a in Refs; X in Operation git-merge-abort Refresh and confirm restoration of the original merge context.
r c in Refs; ] in Operation git-rebase-continue Refresh and confirm continuation after saved staged resolutions.
r s in Refs; ; in Operation git-rebase-skip Refresh and confirm skipping the current compatible rebase step.
r A in Refs; Z in Operation git-rebase-abort Refresh and confirm restoration of the original rebase context.
? in Operation git-bisect-start Collect explicit bad/good boundaries, resolve full commit IDs and review the original branch/object before starting manual bisect.
G in Operation git-bisect-good Review the exact current candidate and record the user-supplied good verdict.
B in Operation git-bisect-bad Review the exact current candidate and record the user-supplied bad verdict.
| in Operation git-bisect-skip Review and skip the current candidate; retain ambiguity when skipped commits prevent a unique first bad.
~ in Operation git-bisect-reset Review and restore the checked original branch/object; reject missing or changed original lineage.
{ in Operation git-cherry-pick-continue Refresh and review continue of the exact retained cherry-pick request.
l in Operation git-cherry-pick-skip Refresh and review skip of the exact retained cherry-pick request.
Y in Operation git-cherry-pick-abort Refresh and review abort of the exact retained cherry-pick request.
} in Operation git-revert-continue Refresh and review continue of the exact retained revert request.
j in Operation git-revert-skip Refresh and review skip of the exact retained revert request.
Q in Operation git-revert-abort Refresh and review abort of the exact retained revert request.
Named command git-operation-continue Review continuation against the fresh actual compatible family.
Named command git-operation-skip Review skipping against the fresh actual compatible family.
Named command git-operation-abort Review abort against exact original lineage and fresh Git state.
C C in Status git-clone Review literal clone arguments and an explicit absent destination, then verify the created regular repository.
C s in Status git-clone-shallow Prepare a depth-one clone at an explicit destination and verify its shallow state and full HEAD.
C b in Status git-clone-bare Review a bare clone destination and verify its separate Git-only repository identity.
C m in Status git-clone-mirror Review a mirror clone destination and verify bare and mirror configuration without a later push.
I I in Status git-init Prepare initialization at an explicit absent destination and verify its unborn repository identity.
i t in Status git-ignore Visit the ordinary worktree .gitignore file without inserting a pattern or saving text.
i p in Status git-ignore-exclude Visit the ordinary common Git info/exclude file through its native visiting owner.
o a in Status git-submodule-add Review a submodule metadata name, source URL and literal path, then verify its gitlink and checkout.
o l in Status git-submodule-list Review recursive submodule status and inspect the actual bounded listing without repository effects.
o u in Status git-submodule-update Review one exact gitlink path and initialize or check out its indexed commit without forcing dirty files.
o s in Status git-submodule-sync Review one declared submodule path and verify its registered URL against .gitmodules.
o d in Status git-submodule-deinit Review non-forced deinitialization of one checked clean submodule, preserving its parent gitlink.
O a in Status git-subtree-add Review an explicit prefix, source repository and pinned full branch object before importing a subtree.
O m in Status git-subtree-merge Review a full local commit and subtree prefix, retaining actual merge/conflict state.
O f in Status git-subtree-pull Pin one explicit source branch before fetching and merging into a reviewed subtree prefix.
O p in Status git-subtree-push Review one explicit endpoint and full destination branch, then verify its published subtree object and tree.
O s in Status git-subtree-split Review an exact commit and prefix, then inspect the full split object while preserving local HEAD and saved files.
T a in Status git-notes-add Review a full notes ref, exact target object and literal message; verify the stored note bytes.
T r in Status git-notes-remove Review one existing note on a full object ID and remove only that note.
T p in Status git-notes-prune Review exact missing-object note targets and prune only those candidates.
> e in Status git-sparse-checkout-enable Review enabling cone mode and verify actual tracked-file materialization.
> d in Status git-sparse-checkout-disable Review disabling sparse checkout and verify that tracked files return.
> r in Status git-sparse-checkout-reapply Review reapplying the captured cone selection to a checked clean working tree.
> s in Status git-sparse-checkout-set Review literal relative directories and replace the cone selection without forcing saved changes.
> a in Status git-sparse-checkout-add Review literal relative directories and add them to the captured cone selection.
W c in Status git-format-patch Review an explicit local commit range and complete mailbox bytes, then save to one absent output file.
W s in Status git-save-diff Review two local commits and a complete binary diff, then save to one absent output file.
w p in Status git-apply-patch Review one complete local patch file, then apply its sealed bytes to the checked index and working tree.
! in Git navigation git-run-command Compose literal Git argv and review executable, cwd and unknown postconditions before execution.
M-x git-run-shell-command git-run-shell-command Explicitly compose one shell command using the configured shell program and arguments, with exact review.
w a in Status git-apply-mailbox Review one complete local mailbox, then apply its decoded patches as checked commits.
W r in Status git-request-pull Review local commit anchors and one explicit published remote branch, then save request text without sending mail.
Z Z, Z l in Status git-worktree-list Open a bounded NUL-record worktree list with raw paths, full HEADs, distinct Git/common directories, lock reasons and prune state.
c in Worktree git-worktree-create Review a new linked worktree and new local branch at the exact observed HEAD, using a checked absent destination.
v in Worktree git-worktree-visit Open checked Git Status for the selected worktree identity while retaining native source buffers and windows.
L in Worktree git-worktree-lock Review an exact linked-worktree path and explicit one-line lock reason.
U in Worktree git-worktree-unlock Review unlocking one exact linked-worktree record without changing its saved files.
P in Worktree git-worktree-prune Review all captured missing unlocked worktree records and prune only while the complete registry remains unchanged.
k in Worktree git-worktree-remove Review non-forced removal of one clean linked worktree; protect current/main roots, lock state and retained native resources.
z z, z l in Status git-stash-list Open a bounded exact stash list; subjects and ordinal labels never supply mutation authority.
c in Stash git-stash-create Review and stash saved tracked and untracked changes, excluding ignored files; protect affected unsaved buffers.
v, Return in Stash git-stash-show Inspect the selected full stash object as bounded read-only patch detail with explicit partial status.
a in Stash git-stash-apply Review and apply one full stash object to checked clean saved state while keeping its stash entry.
p in Stash git-stash-pop Apply one full stash object and drop only the revalidated captured entry after success; retain the stash on conflict.
b in Stash git-stash-branch Review a new branch at the selected stash base, restore its full object and remove its checked entry only on success.
k in Stash git-stash-drop Review removal of one exact stash entry without changing the saved working files or index.
H in Conflict git-conflict-explain Send copied roles and saved/unsaved source through optional input-only AI explanation; its read-only answer grants no Git action.
1 in Conflict git-conflict-use-base Review complete Base replacement of only the checked working file.
2 in Conflict git-conflict-use-current Review complete operation-relative Current replacement without staging.
3 in Conflict git-conflict-use-applied Review complete operation-relative Applied replacement without staging.
K in Conflict git-conflict-delete Review exact deletion from disk and index, leaving continue separate.
x in Conflict git-conflict-stage Review staging of captured saved text or absence; protect unsaved results and reject stale evidence.
Named command git-conflicts Inspect actual Git sequence state and exact selectable conflict paths.
Return in Operation or Conflict git-conflict-visit Inspect selected stages, then visit the canonical editable result.
Named command git-operation-status Inspect actual Git-owned sequence state and conflicts.
p, M p in Refs git-push Review one exact source branch and its configured upstream destination before publication.
&, M f in Refs git-fetch Fetch the selected configured remote without integration.
b, y in Status; M b in Refs git-refs Inspect exact native repository refs.
n in Refs git-branch-create Confirm a new local branch at the selected full commit.
S in Refs git-branch-switch Confirm a checked clean local branch switch.
R in Refs git-branch-rename Confirm the exact local branch and new name.
D in Refs git-branch-delete Confirm non-forced local deletion.
t in Refs git-tag-create Confirm a local lightweight tag or explicitly compose an annotated tag.
T in Refs git-tag-delete Confirm deletion of the exact local tag object.

Configuration keymap contracts

The complete reference sample spells out every default target in all supported contexts, including local overlays and the state maps. Copy only desired overrides to preserve inherited stage distinctions; explicit mappings select their named action at the active owner.

keys.editor belongs to non-modal editing. Modal editing resolves keys.vim_normal or keys.vim_insert or keys.vim_replace over independent native factories; non-modal overrides do not leak into those states. Local Org editing/capture/source maps overlay the selected state. keys.vim_visual_character, keys.vim_visual_line and keys.vim_visual_block resolve independent state factories. M-x and C-g remain protected recovery in modal editing. Escape/C-[ is a state transition while modal editing owns input, so a standalone Escape cannot become a configurable command prefix there.

keys.completion supplies the active popup map; Escape remains literal cancel. keys.editor, keys.minibuffer, keys.tree and keys.git inherit independent complete maps. Omitted entries keep their built-in command. An exact normalized override replaces that chord, including an earlier spelling from another included layer. Removing/commenting an override restores the inherited entry. Two aliases for one chord in the same source reject, even when their target names agree. Empty strings, booleans, sentinel values and removal operations cannot unbind.

The candidate is validated before publication. Unknown or unavailable targets, invalid syntax, normalized duplicates and command/prefix collisions reject the whole candidate. For example, C-x cannot become an immediate command while C-x C-s remains a binding. Diagnostics identify the context, source key and involved sequences; source key/value locations are included when available. C-g is reserved for keyboard-quit in every context. A longer sequence that contains it is unreachable because it cancels pending prefixes, and rejects.

These contracts expose validated maps through Snapshot::keymaps(). Library input/session construction supplied with a snapshot dispatches keys.editor, keys.minibuffer, keys.tree and keys.git through their native Rust action owners. The focused prompt temporarily owns the minibuffer map even when an Org role or the tree retains workspace focus. Tree focus takes precedence over Org editing. No keymap edits the underlying document from a prompt.

Org context inheritance and role availability are described in Org keymap contracts.

Sequence vocabulary

A sequence has one through eight normalized chords separated by ASCII whitespace. Each chord is one printable scalar or a named key. Names are case-insensitive: RET/Return/Enter, TAB, SPC/Space, DEL/Backspace, Delete, ESC/Escape, NULL, Left, Right, Up, Down, Home, End, PageUp, PageDown, BackTab. Delete removes forward; DEL means Backspace.

C- adds Control and M-/A- adds Alt/Meta; modifiers can combine but cannot repeat. S- applies to named keys. For text, use the actual uppercase or shifted scalar, such as A or %, rather than S-a. Control letters fold to lowercase. S-TAB normalizes to BackTab. Named modified keys still require the terminal to report them; configuration cannot create an intercepted or absent event.

Escape plus a plain non-Escape chord normalizes to its Meta form: ESC j and M-j are one binding. A bare Escape is reserved for the existing finite Meta wait/expiry operation. ESC C-j cannot promise a distinct physical sequence. The terminal input contract describes timing and reports.

The conservative terminal vocabulary also unifies these aliases, including when an enhanced protocol can report some physical keys separately:

Spellings Normalized key
C-i TAB
C-j, C-m RET
C-h, C-?, C-8 Backspace
C-[, C-3 Escape Meta prefix
NULL, C-@, C-2 C-SPC
C-4 Control-backslash
C-5 C-]
C-6 C-^
C-/, C-7 C-_

Alt remains present on Control aliases: C-M-h and M-DEL are one chord.

Editor defaults and availability

The editor inventory above and the Org inventory together list every compiled command, including global Org entry keys, with the aliases above. Editor targets are the compiled commands and admitted ai-<name> definitions used by M-x. A user alias does not install a new handler, shell expression or executable body. Prompt-only actions below are unavailable in the editor and M-x catalog.

A supplied editor mapping such as keys.editor.'M-j' = 'next-line' invokes the same handler as M-x next-line. Reassigning C-f replaces that chord while its unmodified Right alias remains inherited. The input owner copies the admitted map; it does not reread configuration during typing or drawing.

Custom prefixes consume their complete bounded sequence and display the pending normalized chords. A mismatch consumes the sequence and reports an error; no suffix leaks into document text. C-g, paste, prompt acquisition/acceptance and workspace ownership changes clear pending chords. Resize alone keeps an editing prefix. Escape expiry clears the whole pending sequence under the existing finite Meta policy. Unmapped printable input retains ordinary insertion.

Repetition follows the resolved action: single-chord editing/motion actions keep native repeat behavior, while prefix completions and session/prompt transitions require fresh presses. Releases do not dispatch. Every Enter alias requires a fresh prompt acceptance. Literal paste bypasses bindings, including printable characters assigned to commands, and publishes through the canonical edit owner. Read-only refusal, saved-state identity and undo use the same owners as M-x. Executable startup reads user configuration once; source edits require a restart.

Minibuffer defaults and availability

These defaults describe the existing stage owners. A target is admitted only where its stage supports it; it never edits the underlying document. Decisions retain fresh y/n consent (query-replace also accepts q), and Return/paste cannot affirm a decision. Inventory keeps its existing selection owner.

Keys Target Existing stage behavior
C-g keyboard-quit Cancel any stage.
RET minibuffer-accept Accept text/search, invoke a command, or select inventory; no affirmative decision default.
TAB minibuffer-complete Complete commands, find-file paths or buffer names; write/save shows path guidance; literal search/replacement inserts a tab.
Backspace backward-delete-char Delete the preceding text grapheme.
Delete, C-d delete-char Delete the following text grapheme.
Left, C-b backward-char Move through text graphemes.
Right, C-f forward-char Move through text graphemes.
Home, C-a move-beginning-of-line Start of prompt text; inventory uses Home alone for first item.
End, C-e move-end-of-line End of prompt text; inventory uses End alone for last item.
Up, C-p minibuffer-previous Previous command or find-file candidate; inventory uses Up alone for previous item.
Down, C-n minibuffer-next Next command or find-file candidate; inventory uses Down alone for next item.
M-p minibuffer-history-previous Recall an older accepted command in M-x.
M-n minibuffer-history-next Recall a newer command or restore the M-x draft.
C-s isearch-forward Repeat forward in incremental search.
C-r isearch-backward Repeat backward in incremental search.

The six minibuffer-* targets name existing Rust prompt actions in the common binding catalog. They are context-only actions. Minibuffer configuration admits exactly these targets plus the text-motion, deletion, search and cancel command identities in this table. An unrelated command such as save-buffer rejects.

A supplied alias such as keys.minibuffer.'M-a' = 'minibuffer-accept' accepts through the active owner: M-x records its command history, find-file opens the selected or typed file, descends into directories or retains failed drafts, and search accepts its current result. Completion aliases retain the table's stage behavior, including literal tabs in search/replacement. Custom text-motion/deletion aliases use the same grapheme cursor and prompt limit. Explicit previous/next aliases select the corresponding command candidate or inventory item; history aliases recall commands only in M-x; inherited keys keep the stage distinctions in the table.

Decision stages retain fixed fresh y/n answers (query-replace also accepts q). Mapped acceptance, completion and editing cannot supply consent. Additional keyboard-quit aliases may be sequences; their mismatched suffix is consumed, so a y suffix cannot affirm a pending decision. Reserved C-g always cancels. Accept aliases, completed prefixes and transitions require fresh presses; releases and held acceptance keys cannot submit a newly acquired argument.

Tree defaults and availability

Keys Target
C-x C-f find-file
C-x g git-status
C-g keyboard-quit
TAB insert-tab (return to editing)
M-x execute-extended-command
Up, C-p tree-previous-line
Down, C-n tree-next-line
Right, C-f tree-expand
Left, C-b tree-collapse
RET, C-x t o tree-open
C-x C-c save-buffers-kill-terminal
C-x t t toggle-file-tree
C-x t f focus-file-tree
C-x t r tree-refresh
C-x t D tree-delete
C-x t R tree-rename
C-x t n tree-create-file
C-x t d tree-create-directory

Tree configuration admits the tree command catalog, Git Status/processes, prepared clone/init commands, find-file, cancel, exit, M-x and return-to-editing, plus the existing navigation aliases previous-line, next-line, backward-char, forward-char and newline. File mutation commands retain their prompts and explicit confirmation; a binding cannot supply consent.

Supplied tree bindings dispatch only while the tree owns workspace focus and no prompt is active. Exact reassignment preserves independent inherited aliases: changing C-n does not change Down. Navigation aliases can repeat; open, refresh, mutation and workspace transitions require fresh presses. Pending prefixes are cleared by prompt acquisition, cancellation and workspace changes. Tree text and paste never enter the visiting buffer while tree focus is retained.

Git commit defaults and availability

keys.git_commit inherits editor text editing for messages and prepared argument drafts in both startup profiles. Prepared argument drafts require a literal JSON array; output drafts require an arguments array and an explicit output path in one JSON object. Both use two separate submissions: checked review, then execution. Normal composition begins with c in Status. Plain Return inserts a newline; submission requires C-Enter (a distinguishable host event) or C-c C-c. C-g and C-c C-k retain cancelled commit/tag session drafts. Prepared argument cancellation restores the source without executing the plan. Composer text is separate from source buffers and filesystem publication.

Keys Target
C-Enter, C-c C-c git-commit-submit
C-g keyboard-quit
C-c C-k git-commit-cancel

Git history defaults and availability

keys.git_history owns History input in both profiles. Prompts still use keys.minibuffer. Pointer selection requires the currently painted observation and viewport. q returns from revision detail to History, then Status, preserving selection and source ownership.

Keys Target
! git-run-command
P git-cherry-pick
V git-revert
C-x g git-status
q git-quit
g git-refresh
Tab git-show
Return git-show-range
* git-mark
a, U git-sequence-mark, git-sequence-unmark
f git-log-next-page
A, F git-commit-amend, git-commit-fixup
$ git-processes
M-x, : execute-extended-command
C-g keyboard-quit
C-x C-c save-buffers-kill-terminal
Up, C-p, p previous-line
Down, C-n, n next-line
PageUp, PageDown scroll-down-command, scroll-up-command
M-<, M-> beginning-of-buffer, end-of-buffer

Git inspection defaults and availability

keys.git_inspect owns revision, reflog, blame and historical-file navigation in both profiles. Return opens the selected exact parent, revision or historical blob. v inspects a full revision; it never treats a reflog selector as an argument. git-visit-file visits current source through its canonical native owner.

Keys Target
! git-run-command
C-x g git-status
q git-quit
g git-refresh
Tab, Return git-toggle-section
v git-show
$ git-processes
M-x, : execute-extended-command
C-g keyboard-quit
C-x C-c save-buffers-kill-terminal
Up, C-p, p previous-line
Down, C-n, n next-line
PageUp, PageDown scroll-down-command, scroll-up-command
M-<, M-> beginning-of-buffer, end-of-buffer

Git defaults and availability

keys.git applies to native Git navigation in both startup profiles. It keeps source text read-only and retains the original windows, tree and terminal owners. User mappings replace individual chords; C-g remains reserved for native cancellation. Prompts use keys.minibuffer.

Keys Target
! git-run-command
C C git-clone
C s git-clone-shallow
C b git-clone-bare
C m git-clone-mirror
I I git-init
i t git-ignore
i p git-ignore-exclude
o a git-submodule-add
o l git-submodule-list
o u git-submodule-update
o s git-submodule-sync
o d git-submodule-deinit
O a git-subtree-add
O m git-subtree-merge
O f git-subtree-pull
O p git-subtree-push
O s git-subtree-split
T a git-notes-add
T r git-notes-remove
T p git-notes-prune
> e git-sparse-checkout-enable
> d git-sparse-checkout-disable
> r git-sparse-checkout-reapply
> s git-sparse-checkout-set
> a git-sparse-checkout-add
W c git-format-patch
W s git-save-diff
W r git-request-pull
w p git-apply-patch
w a git-apply-mailbox
Z Z, Z l git-worktree-list
z z, z l git-stash-list
C-x g git-status
C-x C-c save-buffers-kill-terminal
M-x, : execute-extended-command
C-g keyboard-quit
C-Enter, C-c C-c during exact commit review git-commit-submit
c git-commit
b, y git-refs
h, l l git-log
l r git-reflog
B b, B B git-blame
q git-quit
g git-refresh
k, x d git-discard
*, x m git-mark
-, x u git-unmark
0, x c git-unmark-all
s git-stage
u git-unstage
Tab git-toggle-section
? git-dispatch
$ git-processes
Return git-visit-file
Up, C-p, p previous-line
Down, C-n, n next-line

k or x d restores one tracked unstaged whole path from its captured index entry after y/n confirmation; C-g cancels and Return does not imply yes. Modified visiting buffers, including canonical aliases, reject the request. Changing the file or source context invalidates an open confirmation. Hunk and marked-group discard, untracked deletion and gitlink replacement are unsupported. Completed file changes use the existing automatic/ask reload policy; the command never saves or directly replaces a source buffer.

Marks retain complete comparison identities independently of navigation. Use * or x m to mark, - or x u to remove a selected mark, and 0 or x c to clear all marks. At most 256 targets are retained within shared Git memory admission. When marks exist, s/u checks the entire group: whole paths must support one direction; text hunks must be nonoverlapping units from one exact path/layer comparison. Mixed, duplicate, stale or unsupported groups fail before changing the index. Refresh does not retarget old marks; clear or unmark them explicitly.

Only nonempty groups appear, in Unmerged, Untracked, Unstaged and Staged order. Selection follows an exact path and group across refresh. Mouse selection requires the current painted generation, comparison, expansion and dimensions. Tab toggles a group, path comparison or hunk body; Return visits the current source, or inspects the selected operation in Processes. Named git-diff opens read-only patch detail. q returns one presentation level; q, C-g or Escape dismisses its action menu. Returning from Status keeps started Git work owned by the editor.

Org agenda defaults and availability

See Org agenda defaults and availability.

Org calendar defaults and availability

See Org calendar defaults and availability.

Native mode selection

See Org native mode selection.

Org date entry and calendar

See Org date entry and calendar.

Org timestamp context actions

See Org timestamp context actions.

Native task clocks

See Org native task clocks.

Clock totals and reports

See Org clock totals and reports.

Session timers

See Org session timers.

Org agenda source discovery

See Org agenda source discovery.

Native day and week calendars

See Org native day and week calendars.

The read-only bookmark workspace uses keys.bookmark_list: arrows, C-n/C-p and n/p move rows; Return visits; d/u mark or unmark and advance; x deletes marked records; q/C-g returns and discards unexecuted marks. M-x opens the normal command prompt and C-x o changes panes. These local keys do not edit source text.

Amend and fixup use the native command catalog. Their first explicit composer submission opens exact review; a second C-Enter or C-c C-c accepts. q or C-g in review retains the draft.

Git refs defaults and availability

keys.git_refs owns read-only refs, explicit fetch and reviewed local branch/tag actions in both profiles. Prompts retain keys.minibuffer. n creates a branch; p reviews one upstream push. * and - retain or clear its independent exact source mark. Up/Down and C-p/C-n navigate. Annotated tag text uses the retained native message owner and keys.git_commit; its review uses the explicit submit aliases below.

Keys Target
! git-run-command
E git-rebase-autosquash
m c git-merge-continue
m a git-merge-abort
r a git-rebase-autosquash
r c git-rebase-continue
r s git-rebase-skip
r A git-rebase-abort
= git-merge-fast-forward
i git-merge
I git-merge-no-fast-forward
e git-rebase
m f git-merge-fast-forward
m m git-merge
m n git-merge-no-fast-forward
r r git-rebase
* git-mark
- git-unmark
p git-push
M p git-push
& git-fetch
M b git-refs
M f git-fetch
TAB git-toggle-section
t git-tag-create
T git-tag-delete
C-Enter git-commit-submit
C-c C-c git-commit-submit
C-x g git-status
q git-quit
g git-refresh
n git-branch-create
S git-branch-switch
R git-branch-rename
D git-branch-delete
? git-dispatch
$ git-processes
M-x execute-extended-command
: execute-extended-command
C-g keyboard-quit
C-x C-c save-buffers-kill-terminal
Up previous-line
Down next-line
C-p previous-line
C-n next-line
PageUp scroll-down-command
PageDown scroll-up-command
M-< beginning-of-buffer
M-> end-of-buffer

Git sequence defaults and availability

keys.git_sequence owns Git Operation navigation and checked sequence controls in both profiles. Up/Down or C-p/C-n selects exact conflict paths; Return opens their read-only Base/Current/Applied stages. Conflict Return visits the editable result. Pointer selection binds the painted exact conflict path. q returns to Status without aborting Git; g refreshes actual Git state. The view identifies busy controls until owned repository work finishes. Each control refreshes the actual family, original lineage, metadata, index and worktree before opening exact review. Continue requires saved staged resolutions. y, C-Enter or C-c C-c confirms; Return does not. n or C-g cancels the review. Cherry-pick/revert controls retain the exact reviewed order and mainlines. They require the retained original lineage as well as matching actual Git metadata; missing lineage is unavailable rather than guessed from a label. Abort explicitly restores the original context, including a completed prefix. Generic controls dispatch these compatible families by their native names. Manual bisect uses ? for explicit bad/good boundaries and G/B/\| for separate current-candidate classifications. No build or test command runs. Full boundary and candidate IDs remain reviewable. ~ restores the checked original branch and object. Skipped-candidate ambiguity does not identify a unique first bad commit.

Keys Target
! git-run-command
RET git-conflict-visit
? git-bisect-start
G git-bisect-good
B git-bisect-bad
| git-bisect-skip
~ git-bisect-reset
{ git-cherry-pick-continue
l git-cherry-pick-skip
Y git-cherry-pick-abort
} git-revert-continue
j git-revert-skip
Q git-revert-abort
> git-merge-continue
X git-merge-abort
] git-rebase-continue
; git-rebase-skip
Z git-rebase-abort
C-x g git-status
q git-quit
g git-refresh
$ git-processes
M-x execute-extended-command
: execute-extended-command
C-g keyboard-quit
C-x C-c save-buffers-kill-terminal
Up previous-line
Down next-line
C-p previous-line
C-n next-line
PageUp scroll-down-command
PageDown scroll-up-command
M-< beginning-of-buffer
M-> end-of-buffer

Git conflict defaults and availability

keys.git_conflict owns index-side inspection and checked resolution in both profiles. 1/2/3 reviews Base/Current/Applied replacement without staging. K reviews exact deletion from disk and index; x reviews staging saved text or absence. Confirm with y, C-Enter or C-c C-c; cancel with n or C-g. Unsaved result buffers, changed saved bytes/stages and unsupported or partial sides reject. Continuing remains separate. H captures roles and saved/unsaved source through the existing optional AI owner with input-only permissions. Its read-only answer cannot edit, stage or continue; changed source marks it historical. Unavailable AI or reached input limits leave manual inspection and resolution available. Return visits the canonical editable result through the existing file owner; q returns to Operation without changing Git state. g refreshes actual sequence state, requiring a fresh inspection before any later resolution action.

Keys Target
! git-run-command
H git-conflict-explain
1 git-conflict-use-base
2 git-conflict-use-current
3 git-conflict-use-applied
K git-conflict-delete
x git-conflict-stage
C-x g git-status
q git-quit
g git-refresh
RET git-conflict-visit
$ git-processes
M-x execute-extended-command
: execute-extended-command
C-g keyboard-quit
C-x C-c save-buffers-kill-terminal
Up previous-line
Down next-line
C-p previous-line
C-n next-line
p previous-line
n next-line
PageUp scroll-down-command
PageDown scroll-up-command
M-< beginning-of-buffer
M-> end-of-buffer

Git stash defaults and availability

keys.git_stash owns the native Stashes list in both profiles. Status z z or z l opens it. Selection retains full object identity; refresh never substitutes an entry that inherited an ordinal. Return or v toggles bounded read-only patch detail. All changing actions prepare exact saved-state review and require y, C-Enter or C-c C-c; Return alone does not accept. n and C-g cancel.

Create includes saved tracked and untracked files, excluding ignored files. Apply/pop/branch require a checked clean saved index and worktree. Affected unsaved visiting sources reject without saving; unrelated unsaved text stays owned. Pop and branch restore the full object before a separately checked drop. Conflicts retain the stash and expose actual unmerged paths through git-conflicts; no sequence continuation or rollback is inferred. Reached caps and uncertain effects remain visible. Existing file automatic/ask reload policy applies.

Keys Target
! git-run-command
c git-stash-create
a git-stash-apply
p git-stash-pop
b git-stash-branch
k git-stash-drop
C-x g git-status
q git-quit
g git-refresh
TAB, RET git-toggle-section
v git-stash-show
$ git-processes
M-x, : execute-extended-command
C-g keyboard-quit
C-x C-c save-buffers-kill-terminal
Up, C-p previous-line
Down, C-n, n next-line
PageUp scroll-down-command
PageDown scroll-up-command
M-< beginning-of-buffer
M-> end-of-buffer

Git worktree defaults and availability

keys.git_worktree owns Worktrees in both profiles. Status Z Z or Z l opens it. Selection retains exact operating-system path bytes and full HEAD identity; Return or Tab toggles wrapped details, including per-worktree and common Git directories, lock reasons and prune state. v opens that worktree's checked Git Status context while retaining source buffers and windows. q returns to Status.

Create prompts for an absent path and a new local branch at the observed HEAD. All changing actions show exact paths and object identities and require y, C-Enter or C-c C-c; Return alone does not accept. n and C-g cancel. Lock retains its explicit one-line reason. Prune covers the complete set of missing unlocked records and refuses reappeared paths. Remove requires a clean saved tree, including untracked and ignored files, and refuses main/current, locked or active-sequence targets. Retained visiting buffers, file-tree roots and native process/language-server owners protect their worktrees. Actions serialize common repository storage and recheck saved state and full registry facts before Git; no force, implicit save, automatic process stop or rollback is supplied.

Keys Target
! git-run-command
c git-worktree-create
L git-worktree-lock
U git-worktree-unlock
P git-worktree-prune
k git-worktree-remove
C-x g git-status
q git-quit
g git-refresh
TAB, RET git-toggle-section
v git-worktree-visit
$ git-processes
M-x, : execute-extended-command
C-g keyboard-quit
C-x C-c save-buffers-kill-terminal
Up, C-p, p previous-line
Down, C-n, n next-line
PageUp scroll-down-command
PageDown scroll-up-command
M-< beginning-of-buffer
M-> end-of-buffer