Every movement key
The arrow-key group is fixed and cannot be rebound.
| Key | Action | Notes |
|---|---|---|
| ↑ ↓ ← → | Move the cursor | Fixed. Left and right move one “character”, not one byte (see 2.2.3). |
| PageUp PageDown | One page up or down | Fixed. A page is the height of the content area. |
| Home End | Start / end of line | Fixed. |
| Ctrl+A Ctrl+E | Start / end of line | Configurable. For keyboards where Home/End are awkward. |
| Ctrl+Home Ctrl+End | Start / end of document | Fixed. |
| Ctrl+G | Go to line / column | See 2.2.2. |
- → at the end of a line moves to the start of the next, and ← at the start moves to the end of the previous one.
- Moving up and down remembers the column you started from: pass through a short line and back onto a long one, and the cursor returns to where it was rather than being clipped.
- When a line is wider than the window, moving right scrolls horizontally — most noticeable with line wrap off (see 2.2.9).
The second row from the bottom always shows line:column. Erya does have a “show cursor position” action that prints it in the message row, but it has no default key — the status bar already tells you (see 4.4.6).
Jumping to a line and column
Ctrl+G takes a line number, or “line:column”.
- 42 jumps to the start of line 42.
- 42:8 jumps to line 42, character 8.
- A line number past the end stops at the last line; a column past the end stops at the end of that line.
- Malformed input (negative numbers, letters) gives “Invalid position; enter a positive line number or line:column” and asks again.
- On success the message row confirms: “Jumped to line 120, column 16”.
Given error[E0308]: src/main.rs:120:16, type 120:16 into Ctrl+G and you are there. The same key jumps to an offset in the hexadecimal view (see 3.3.4).
Moving one “character” at a time
Erya's unit is the Unicode grapheme cluster — not a byte, not a code point.
Most of the time this is invisible. It matters here:
| Content | One press of ← | What other editors often do |
|---|---|---|
| CJK 漢 | Past the whole character | Much the same |
| Emoji 👨👩👧👦 | Past the whole group | May step through the components, which looks stuck or breaks the glyph apart |
| Combining marks | Past the whole character | May separate the mark from its base |
| Skin-tone modifier 👍🏽 | Past the whole group | May leave a 👍 with no tone behind |
Deleting, overwriting, and selecting use the same unit, so one Backspace removes exactly the character you can see and never leaves half of one behind.
The line:column in the status bar counts characters; the horizontal position on screen counts columns, where a full-width character takes two and a tab expands to the tab width. So character 5 of an all-CJK line sits at screen column 9. The column you type into Ctrl+G is the character count, matching the status bar.
Ordinary selection
Hold Shift while you move.
- Shift works with every movement key: arrows, Home/End, PageUp/PageDown, Ctrl+A/Ctrl+E.
- Moving back shrinks the selection rather than starting a new one.
- Selections are black on grey and may span lines.
- The mode cell of the status bar becomes Selection, and the message row reports the character count.
- Esc cancels the selection; typing replaces the whole selection.
Erya has no single-key select-all. Use Ctrl+Home to reach the start and then Ctrl+Shift+End — if your terminal delivers that combination. If it does not, press Shift+PageDown a few times. (Ctrl+A in Erya is “start of line”, not select-all.)
Block selection
A rectangle, which is what aligned tables and code call for.
- Press Ctrl+B to set the anchor. The message row says “Block selection started; use arrow keys to extend”.
- Draw the rectangle with the arrow keys. Up and down choose the rows, left and right the columns.
- Press Ctrl+B again (or Esc) to cancel.
A block selection can be cut, copied, pasted, and deleted like any other, and it has two actions of its own (filling and shifting, see 2.2.6).
Wrapping splits one line across several rows, which makes “which column” meaningless, so Erya keeps them exclusive:
- Ctrl+L during a block selection: “Line wrap cannot be enabled during block selection; cancel the selection first”
- Ctrl+B while wrapping: “Block selection is unavailable while line wrap is enabled; disable wrapping first”
Press Ctrl+L to turn wrapping off, then start the block selection.
Filling and shifting a block
Two genuinely useful actions that have no default key.
| Action name | Key in Erya Classic | What it does |
|---|---|---|
| fill_rectangle | Alt+F | Asks for a character and fills the whole rectangle with it. Good for rules and padding. |
| move_rectangle_left | Alt+Shift+← | Shifts the contents of the rectangle as a unit, one action per direction. At an edge you get “The block selection cannot move farther in that direction”. |
| move_rectangle_right | Alt+Shift+→ | |
| move_rectangle_up | Alt+Shift+↑ | |
| move_rectangle_down | Alt+Shift+↓ |
Alt combinations and modified arrows do not reach many terminals (see 1.3.9). To use them, either switch to Erya Classic (one press of F2) or assign keys you can actually press in the keymap editor (see 4.1.4). Until then, their key column in F1 help stays blank.
Filling or shifting without a block selection gives “Create a block selection first”. The order is Ctrl+B, arrow keys, then the action key.
Cut, copy, paste
With no selection, cut and copy act on the current line.
| Key | With a selection | Without one |
|---|---|---|
| Ctrl+C | Copies the selection | Copies the whole line |
| Shift+Delete | Cuts the selection | Cuts the whole line |
| Ctrl+K | Cuts the current line, selection or not | |
| Ctrl+V / Shift+Insert | Pastes, replacing any selection | |
| Ctrl+D | Deletes the current line (not into the clipboard) | |
What Ctrl+C copies stays inside Erya: available in every tab, but not in your browser. The reverse holds too — to bring text in from another program, use the terminal's own paste (⌘V on macOS, Ctrl+Shift+V in Windows Terminal and most Linux terminals, or the middle mouse button). Erya supports bracketed paste, so text arriving that way is treated as a single paste and reported as “Pasted N characters”.
Select with the mouse and use the terminal's copy. That is a terminal feature rather than an Erya one, so you will also pick up whatever else is on those rows — just avoid dragging across the status bar.
Cutting lines and insert/overwrite
Three small actions you will use every day.
Cut and delete a line
- Ctrl+K cuts the current line into the clipboard, so you can paste it elsewhere. Press it several times to move a group of lines.
- Ctrl+D deletes the current line without touching the clipboard, so whatever you had copied survives.
- Both are undone with Ctrl+Z.
Insert and overwrite
- Insert toggles. The mode cell alternates between Insert and Overwrite, and the message row says “Switched to overwrite mode”.
- Insert: typing pushes the rest of the line along. The default.
- Overwrite: typing replaces the character under the cursor. Handy for correcting numbers in an aligned table.
Two ways round it: bind toggle_insert to something else in the keymap editor, or switch to Erya Classic, which binds both Insert and Alt+I (see 4.1.2). Byte editing in the hexadecimal view has its own I key, specific to that screen (see 3.3.7).
Indentation is carried over
When you press Enter, Erya repeats the leading spaces and tabs of the current line on the new one. Writing YAML, code, or nested notes needs no re-indenting; press Backspace when you do not want it.
Common problems
The six that come up most often around movement and selection.
| Symptom | Cause and fix |
|---|---|
| Ctrl+A does not select all | In Erya it moves to the start of the line. There is no select-all action (2.2.4). |
| Ctrl+C does not interrupt the program | It copies. Exit with Ctrl+X (1.1.7). |
| The end of a line is off screen | The line is wider than the window. Press Ctrl+L for wrapping, or End to scroll to it. |
| Ctrl+B is refused, mentioning line wrap | They are exclusive. Turn wrapping off with Ctrl+L (2.2.5). |
| Block fill and shift do nothing | No default key. Switch to Erya Classic or bind them (2.2.6). |
| Text copied from a browser will not paste | Use the terminal's paste (⌘V / Ctrl+Shift+V), not Erya's Ctrl+V (2.2.7). |