💾 Loses your work
Get these wrong and the text really is gone.
- There is no autosave and no crash recovery. Anything you have not saved lives only in memory. Close the terminal, drop the SSH connection or crash the machine and it is gone. Erya asks before closing a tab or exiting, and that is the only safety net there is. (see 1.1.7)
- Y on a confirmation row always means “discard”. Reflexively pressing Y at a question is the easiest way to lose work. Press S to save. All three confirmation rows spell out what each letter does — read the row before you answer. (see 2.1.8)
- On an external conflict, both O and R throw something away. O overwrites the version on disk, R discards the version in front of you, and neither can be undone. If in doubt press N, save a copy under a new name, and merge the two with the comparison view. (see 2.1.7)
- Captured phrases and macros vanish unless you save them. Capturing only puts them in memory; Erya never writes the JSON on its own. Run “save phrases” or “save macro” before you exit — and note that neither action has a key in the default profile. (see 2.4.5)
- Never save while the text is garbled. If the garbling comes from a wrong encoding guess, saving writes the damage into the file. Press F7 until the text reads correctly, then save; if unsure, close the tab without saving — the file on disk is still fine. (see 4.3.7)
- Pressing N when leaving a comparison discards every copied block. “N discard and exit” throws away all the merging you just did. The temporary copies are deleted on the way out and cannot be recovered. (see 3.4.8)
- Back up a binary file before you edit it. Binary formats rarely tolerate mistakes: one byte of length difference, or a checksum you forgot to update, and the whole file is broken. Save a copy first. (see 3.3.7)
🔒 Irreversible, or nearly
No undo key for these; you start over.
- Undo holds 100 steps, and one character is one step. It is a poor way to roll back a long passage you just typed. Only replace-all, formatting, paragraph reflow, inserting a phrase and running a macro count as a single step each. (see 2.4.2)
- An automatic reload clears the undo history. When an unmodified document changes on disk, Erya reloads it and drops the undo and redo history with it, because the old steps no longer fit the new content. It surprises everyone the first time. (see 2.1.7)
- Close a tab and its undo history is gone. The history belongs to the tab; reopening the file does not bring it back. (see 2.4.1)
- Replace all never shows you what it is about to change. F6 simply does it — no preview, no confirmation. That is risky with a short search string; walk through the matches with F3 first. (see 2.3.6)
- Applying a comparison overwrites the originals directly. Once you confirm, the originals are written. Erya only checks whether they changed externally in the meantime; it keeps no backup. (see 3.4.7)
🤫 Silent — no warning at all
Nothing stops you, but the result is not what you expected.
- F7 and F8 only change the status bar; the file converts on save. Neither key rewrites anything immediately — the conversion happens the next time you save. Which also means a wrong press costs nothing: undo it, or press again until you are back. (see 3.1.2)
- F7 silently skips encodings that cannot represent your text. If the next encoding cannot hold every character, Erya moves straight to the one after it without comment, so a single press can jump from UTF-8 to GBK. (see 3.1.3)
- Sixteen actions have no key in the default profile. Phrases, macros, block fill and shift, paragraph reflow and “show cursor position” — pressing anything for them does nothing, and that is expected. Their key column in F1 help is blank. (see 4.4.6)
- System settings are not remembered. The profile and language you pick with F2 apply to this run only; the next start is back to the defaults. Use an environment variable or a config file to make them stick. (see 4.2.2)
- Missing translations fall back to Traditional Chinese in silence. If your own translation is incomplete, those strings simply appear in Chinese with no warning. Chinese text in an otherwise English interface usually means an untranslated key. (see 4.2.7)
- A missing keymap at the default path is not reported. If there is no keymap.toml where the platform expects one, Erya quietly uses the built-in defaults. A --keymap or ERYA_KEYMAP path that cannot be read, on the other hand, does get a message. (see 4.1.7)
🔢 Order matters
Do the steps out of order and the key “does nothing”.
- Press N to reach a difference before you copy it. With the cursor on a row that is identical on both sides, Shift+→ does nothing except say there is no difference block to copy. The cursor and the “current difference” are two separate things. (see 3.4.4)
- Create the block selection before filling or shifting it. Without a selection you only get “create a block selection first”. The order is Ctrl+B, arrow keys, then the action key. (see 2.2.6)
- Turn off line wrap before starting a block selection. The two are mutually exclusive, because wrapping makes “which column” meaningless. It works the other way round too: you cannot enable wrapping during a block selection. (see 2.2.5)
- Stop recording before running a macro. Running one while recording only produces “stop recording before running the macro”. (see 2.4.6)
- Copying differences is not the same as applying them. Every copy goes to a temporary file. The originals change only after you press the save key and confirm with Y. (see 3.4.7)
📌 Most often forgotten
Not hard, just easy to forget.
- Saving needs a writable directory, not just a writable file. The atomic save creates its temporary file next to the original, so a read-only directory blocks the save even when the file itself is writable. (see 2.1.6)
- Directories in the path are not created for you. Saving into a directory that does not exist yet simply fails. Create it outside Erya first. (see 2.1.5)
- Phrase and macro JSON follows the document's directory. They live next to the file you are editing, not in your home directory. Switch projects and the previous set is out of reach — copy the JSON across if you want to share it. (see 2.4.5)
- 32 bytes per row needs a 144-column terminal. In a narrower window W keeps 16 bytes per row and says why in the message row. (see 3.3.3)
- Large files can be neither compared nor highlighted. Files of 64 MiB or more are refused by the comparison view, and syntax highlighting is switched off on purpose. (see 3.2.2)
- A macro records keys, not actions. Change the key profile and an old macro can replay into something entirely different. Share macro files only with people using the same profile. (see 2.4.7)
🧭 Interface and naming traps
Where Erya differs from other editors.
- Ctrl+C copies — it does not interrupt. Exit is Ctrl+X. Ctrl+C will not end the program. F11 closes a tab; Ctrl+X leaves Erya. (see 1.1.7)
- Ctrl+A moves to the start of the line; there is no select-all. To cover the whole document use Ctrl+Home followed by Ctrl+Shift+End. (see 2.2.4)
- Ctrl+Y and Ctrl+R swap meanings between the two Erya profiles. In Terminal Safe, Ctrl+Y is redo and Ctrl+R is replace; in Erya Classic, Ctrl+Y deletes a line and Ctrl+R is redo. The easiest pair to press by mistake after switching. (see 4.1.2)
- Esc in the file dialog cancels; it does not go up a level. The parent directory is ← or Backspace. Erya's Esc always means “leave this screen”. (see 2.1.2)
- The status bar column is a character count, not a screen column. A full-width character occupies two screen columns but counts as one character. Ctrl+G uses the same counting as the status bar. (see 2.2.3)
- The difference count counts blocks, not lines. Five consecutive changed lines are one block: N skips the whole block, and copying takes it as a unit. (see 3.4.3)
- Esc does not leave the hexadecimal view of a binary file. There is no text editing to return to. Esc just repeats the way out: F11 closes the tab, Ctrl+X exits. (see 3.3.5)
- Erya's clipboard is not the system clipboard. What Ctrl+C copies stays inside Erya. To exchange text with other programs, use the terminal's own copy and paste. (see 2.2.7)