Keys and mouse
The composer behaves like a Readline prompt, because that is what people already know. The shell adds the keys that need the whole screen.
A few workflows to try
- Write a multi-line request: type the first line, press
Alt-EnterorShift-Enter, add the next line, thenEnterto send the whole draft. Some terminals do not distinguishShift-Enter; useAlt-Enterin that case. - Fix the start of a line:
Ctrl-Amoves to its start; edit it, thenCtrl-Ereturns to its end. This is line navigation, not select-all. - Reuse a request: from an empty draft, press
UporCtrl-Pto recall a submitted input, edit it, thenEnterto send a new request.Ctrl-Rsearches that input history; it does not search the assistant's answers. - Read an earlier answer: scroll with the wheel or
Page Up.Escreturns to the bottom without changing your draft. - Paste text or a picture: use your terminal's usual paste shortcut for text (
Cmd-Von many macOS terminals,Ctrl-Shift-Von many others).Ctrl-Vinside ZettCode is specifically for image attachment, not text paste.
Shortcuts depend on what has focus: Enter in a picker selects a row rather than sending a draft, and Esc closes that panel first. For interactive approval and question panels, read the hint printed at the bottom.
Sending
| Key | What it does |
|---|---|
| Enter | Send the draft, or run a slash command. |
| Alt+Enter, Shift+Enter | Insert a newline. |
| Tab / Shift+Tab | Complete the slash command being typed. |
Editing
| Key | What it does |
|---|---|
| Ctrl+A / Ctrl+E, Home / End | Start or end of the line. |
| Ctrl+B / Ctrl+F, Left / Right | One character. |
| Alt+B / Alt+F, Ctrl+Left / Ctrl+Right | One word. |
| Ctrl+Home / Ctrl+End, Alt+< / Alt+> | Start or end of the whole draft. |
| Ctrl+U / Ctrl+K | Delete to the start or end of the line. |
| Ctrl+W / Alt+Backspace, Alt+D | Delete the previous or next word. |
| Ctrl+Y | Paste the last text removed with a line or word deletion. |
| Ctrl+Z / Ctrl+_ | Undo the latest edit. |
| Up / Down | Move between draft lines, then through submitted input. |
| Ctrl+P / Ctrl+N | Submitted input, directly. |
| Ctrl+R | Search backward through submitted input. |
The shell
| Key | What it does |
|---|---|
| Ctrl+C | Copy the selection and clear it; with nothing selected, stop the running request; on an empty request, clear the draft. |
| Ctrl+D | Delete forward — or exit, when the composer is empty and nothing is running. |
| Ctrl+L | Redraw the screen, for a terminal that lost its contents. |
| Ctrl+T | Expand or collapse the newest thinking block. |
| Ctrl+V | Attach an image from the clipboard. |
| Page Up / Page Down | Scroll the conversation, keeping the composer focused. |
| Esc | Jump back to the newest line when scrolled up; close a panel; close the command menu. |
| Tab | Accept the highlighted row in a panel or the command menu. |
Answering a question
While the model waits on a question, these belong to its panel:
| Key | What it does |
|---|---|
| Up / Down | Move through the choices the model offered. |
| Enter | Act on the highlighted row: choose it (a one-answer question sends it), tick or untick it, or — on the send row — finish a multiple-choice answer. When you have typed instead, it sends what you typed. |
| Anything you type | Edits the answer line, which is what the model receives; the choices fold away for as long as you type, and Up/Down bring them back. |
| Esc, Ctrl+C | Decline: the model is told the question was cancelled. |
Mouse
| Action | What it does |
|---|---|
| Wheel | Scroll the conversation. |
| Click a Thinking or Tool row | Expand or collapse it. |
| Drag in the transcript | Select text; the selection is copied on release, and dragging past the edge keeps extending it. |
| Drag on a panel, the header, or the status line | Copy the text painted there, which those surfaces never offered before. |
| Double-click | Select the whole row. |
| Shift+click | Extend the current selection. |
Hold your terminal's own modifier key (usually Shift or Alt) if you want the terminal emulator's selection instead of ZettCode's.