Multi-key sequences use an 800 ms buffer. A vim-style status bar shows NORMAL / INSERT; single-key shortcuts are disabled while typing in inputs.
| Key | Action |
|---|
| j / k | Scroll down / up (100px) |
| Ctrl+d / Ctrl+u | Half-page down / up |
| g g | Jump to top |
| G | Jump to bottom |
| m | Toggle split / unified |
| t | Cycle tab size (2 → 4 → 8) |
| w | Toggle line wrap |
| n | Toggle line numbers |
| i | Cycle diff indicators |
| I | Cycle inline diff type |
| Cmd+Shift+P | Toggle comment preview |
Files & UI
| Key | Action |
|---|
| J / K | Next / previous file |
| v | Toggle file viewed |
| b | Toggle sidebar |
| / | All-scope search |
| s | Symbol search |
| g v | File browser |
| g t | Theme picker |
| Cmd/Ctrl+K | Command palette |
| ? | Shortcuts help |
Do not confuse: t is tab size, not themes. Themes open with g t.
Plan page (/plan)
| Key | Action |
|---|
| m | Source → Read → Split |
| z | Zen Read |
| e | Live plan edit |
| ⌘/Ctrl+S | Flush autosave while editing |
| o | Outline |
| c | Comments map |
| J / K | Next / previous plan |
| Esc | Discard / exit zen / dismiss composer |
AI assistant
Ask AI is available on local diffs, PR review, plans, and mockups. Bare keys go through the vim-style buffer and do not fire while typing. ⌘/Ctrl+I is a chord and does work while an editor is focused (like ⌘K). Inside the rail, handled keys stop so global vim keys do not double-fire. Press ? to see the same list in the shortcuts modal.
All surfaces
| Key | Action |
|---|
| a | Toggle Ask AI (open and focus composer; close if the composer is already focused) |
| ⌘/Ctrl+I | Same as a, including while typing |
| A | Open Ask AI with a new conversation |
| Enter / ⌘/Ctrl+Enter | Send. Shift+Enter inserts a newline. Enter does not send while @ mentions or / actions are open |
| / | Slash-command palette (empty composer only) |
| ⌘/Ctrl+. | Stop the running request |
| ⌘/Ctrl+Shift+N | New conversation (rail) |
| ⌘/Ctrl+[ / ⌘/Ctrl+] | Previous / next conversation |
| ⌘/Ctrl+1 2 3 | Run quick action 1 / 2 / 3 |
| ⌘/Ctrl+M | Open the inline model picker |
| ⌘/Ctrl+Shift+E | Cycle reasoning effort (Auto → Low → Medium → High) |
| ⌘/Ctrl+Shift+Y | Copy the last assistant response |
| ⌘/Ctrl+Shift+Enter | Retry the last failed / canceled request |
| ⌘/Ctrl+U | Attach an image |
| ⌘/Ctrl+Shift+X | Clear the composer (⌘/Ctrl+Z undoes when empty) |
| ⌘/Ctrl+Shift+F | Insert @ to attach a file |
| Esc | Close Ask AI (closes the mention or slash palette first) |
| ⌘/Ctrl+Shift+. | Toggle “Context being shared” |
Diff and PR only
| Key | Action |
|---|
| g a | Ask about the active file (@path in the composer) |
Local diff only
| Key | Action |
|---|
| ⌘/Ctrl+Shift+A | Add the current line selection to Ask AI (opens the rail if there is no selection) |
TUI
The experimental TUI has its own keymap (vim-style). See repository docs/cli.md §4d for the full TUI table while the site stays web-authoritative.