Keyboard Shortcuts¶
Press ? anywhere in the notebook (outside a code editor or text field) to show the shortcuts modal.
On macOS, read Ctrl as Cmd in the shortcuts below.
Editor Shortcuts¶
| Shortcut | Action |
|---|---|
| Shift+Enter | Run the current cell |
| Ctrl+Shift+Enter | Rerun the current cell, bypassing the cache |
| Ctrl+Z | Undo |
| Ctrl+Y (Cmd+Shift+Z on macOS) | Redo |
| Ctrl+A | Select all |
The editor also carries CodeMirror's default keymap: Ctrl+/ toggles a comment, Ctrl+[ / Ctrl+] change indentation, and Alt+Up / Alt+Down move the current line.
Notebook Shortcuts¶
| Shortcut | Action |
|---|---|
| ? | Show or hide the keyboard shortcuts modal |
| Esc | Close the shortcuts modal, or an open menu |
Panel Shortcuts¶
| Shortcut | Where | Action |
|---|---|---|
| Enter | Inspect panel input | Evaluate the expression |
| Ctrl+Enter | Tests panel | Run the cell's tests |
Cell Actions (Buttons)¶
These are in the cell gutter, visible on hover. The glyphs are the buttons' actual labels:
| Button | Action |
|---|---|
| ▶ | Run cell |
| ↻ | Rerun cell, bypassing the cache |
| ■ | Cancel the running cell (replaces ▶ and ↻ while it runs) |
| ▲ / ▼ | Move cell up / down |
| + | Add cell below |
| ⎘ | Duplicate cell |
| × | Delete cell |
| ▽ / ▷ | Collapse / expand cell |
| 🔍 | Inspect cell inputs (REPL) |
| 🧪 | Unit tests (Python cells) |
Tip
The status glyph at the top of the gutter shows the cell's current state (idle, queued, running, ready, stale, error); hover it for details.
Not yet bound to keyboard¶
These operations exist in the UI but don't have dedicated keyboard shortcuts yet. Use the buttons:
- Run all / rerun all cells (▶ Run All and ↻ Rerun All in the header)
- Add cell (
+in the cell gutter adds below; Add cell in the header appends a cell of the kind you pick). There is no "add above". - Delete cell (use
×in the cell gutter; it deletes immediately, with no confirmation, and does nothing when only one cell is left) - Reorder cells (use
▲/▼in the gutter; there is no drag to reorder) - Navigate cells (no arrow-key navigation between cells; click to
focus, or use the editor
↑/↓to move the cursor within a cell)
This list is intentionally explicit so you know what's wired up
versus what's still UI-only. Missing bindings are usually a one-line
addition to the keymap in frontend/src/composables/useCodemirror.ts (or the
global handler in frontend/src/views/NotebookPage.vue), plus a row in
frontend/src/components/KeyboardShortcutsModal.vue. Open an issue if a
specific shortcut is high-friction for you.