Part 2 · Everyday editing / 2.2

Moving, selecting, and the clipboard

How the cursor moves, how selections work, and where the clipboard lives — including the two things Erya does differently: moving by Unicode grapheme cluster, and a block selection you can fill and shift as a unit.

Reading time about 14 min Audience Everyone Prerequisites 1.3 Version v1.0 ・ 2026-08-26
2.2.1

Every movement key

The arrow-key group is fixed and cannot be rebound.

KeyActionNotes
↑ ↓ ← →Move the cursorFixed. Left and right move one “character”, not one byte (see 2.2.3).
PageUp PageDownOne page up or downFixed. A page is the height of the content area.
Home EndStart / end of lineFixed.
Ctrl+A Ctrl+EStart / end of lineConfigurable. For keyboards where Home/End are awkward.
Ctrl+Home Ctrl+EndStart / end of documentFixed.
Ctrl+GGo to line / columnSee 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).
Which line am I on? Look at the status bar

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).

2.2.2

Jumping to a line and column

Ctrl+G takes a line number, or “line:column”.

Enter confirm Esc cancel ←/→ move caret Backspace/Delete edit
Go to line/column (for example 42 or 42:8): 120:16
  • 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”.
Compiler errors paste straight in

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).

2.2.3

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:

ContentOne press of ←What other editors often do
CJK 漢Past the whole characterMuch the same
Emoji 👨‍👩‍👧‍👦Past the whole groupMay step through the components, which looks stuck or breaks the glyph apart
Combining marksPast the whole characterMay separate the mark from its base
Skin-tone modifier 👍🏽Past the whole groupMay 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.

“Column” is not the same as “screen column”

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.

2.2.4

Ordinary selection

Hold Shift while you move.

Chapter 1 Background The project began in March 2026. The goal is to convert the existing document set to plain text.
report.txt │ 3:26 │ Selection │ UTF-8 │ LF
Selected 10 characters
  • 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.
There is no “select all”

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.)

2.2.5

Block selection

A rectangle, which is what aligned tables and code call for.

No. Item Qty Price 001 Monitor arm 2 1280 002 Keyboard 1 3200 003 Mouse pad 5 180
order.txt │ 4:5 │ Block selection │ UTF-8 │ LF
Block-selected 12 characters
  1. Press Ctrl+B to set the anchor. The message row says “Block selection started; use arrow keys to extend”.
  2. Draw the rectangle with the arrow keys. Up and down choose the rows, left and right the columns.
  3. 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).

Block selection and line wrap cannot both be on

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.

2.2.6

Filling and shifting a block

Two genuinely useful actions that have no default key.

Action nameKey in Erya ClassicWhat it does
fill_rectangleAlt+FAsks for a character and fills the whole rectangle with it. Good for rules and padding.
move_rectangle_leftAlt+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_rightAlt+Shift+→
move_rectangle_upAlt+Shift+↑
move_rectangle_downAlt+Shift+↓
These five are empty in the default profile

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.

Select first, then act

Filling or shifting without a block selection gives “Create a block selection first”. The order is Ctrl+B, arrow keys, then the action key.

2.2.7

Cut, copy, paste

With no selection, cut and copy act on the current line.

KeyWith a selectionWithout one
Ctrl+CCopies the selectionCopies the whole line
Shift+DeleteCuts the selectionCuts the whole line
Ctrl+KCuts the current line, selection or not
Ctrl+V / Shift+InsertPastes, replacing any selection
Ctrl+DDeletes the current line (not into the clipboard)
Erya's clipboard is not the system 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”.

Getting text out of Erya

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.

2.2.8

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.
Mac keyboards have no Insert key

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.

2.2.9

Common problems

The six that come up most often around movement and selection.

SymptomCause and fix
Ctrl+A does not select allIn Erya it moves to the start of the line. There is no select-all action (2.2.4).
Ctrl+C does not interrupt the programIt copies. Exit with Ctrl+X (1.1.7).
The end of a line is off screenThe line is wider than the window. Press Ctrl+L for wrapping, or End to scroll to it.
Ctrl+B is refused, mentioning line wrapThey are exclusive. Turn wrapping off with Ctrl+L (2.2.5).
Block fill and shift do nothingNo default key. Switch to Erya Classic or bind them (2.2.6).
Text copied from a browser will not pasteUse the terminal's paste (⌘V / Ctrl+Shift+V), not Erya's Ctrl+V (2.2.7).