# v0.4 — Visual mode + ex commands > Part of the [Typoena macro plan](macroplan.md). Requirements and targets: > [qfd.md](qfd.md). Load-bearing decisions: [adr.md](adr.md). **Status:** COMPLETE in core 2026-07-11, host-tested (83 editor tests), on-device smoke-test pending. Charwise **Visual** (`v`) and linewise **VisualLine** (`V`) selection landed with `y`/`d`/`c` on the span: charwise is vim-inclusive of the char under the further caret, linewise spans whole logical lines and fills the register linewise (so `Vy`…`p` copies a line, `Vd` deletes it like `dd`). Motions (`h j k l`, `w b e`, `0 $`, `gg G`, `Ctrl-d/u`) and counts extend the selection; `v`/`V` toggle/switch submode, `Esc` cancels. The selection renders as reverse-video cells (black fill, glyphs redrawn white) — the only selection affordance on a 1-bit panel — with the caret cell punched back to *normal* video so the active end stands out. The Normal-mode motions were factored into a shared `move_by` helper so Normal and Visual can't drift. **DECISION (2026-07-07, resolved 2026-07-11):** `v`/`V` = **Visual** selection (vim-standard). The read-only **View** (reading/scroll) mode that used to sit on `v`/`V` moved to **`gr`** (go-read) — a `g`-prefixed gesture reusing the existing pending-`g` machinery, no vim clash. View mode stays; `v`/`V` are now Visual. - [x] Visual char (`v`) and line (`V`) modes, `y d c` on selections — landed 2026-07-11 (18 new tests). Known limits (deferred): no `o` swap-ends, no `x`/`s` operator aliases, no Visual `.` repeat, no `:'<,'>` range commands. - [~] `:` command line (mechanism ✓; `:w`/`:wq`/`:x` save, `:fmt`/`:sync`/`:gl` wired; `:q` deliberately dropped — nothing to quit to). Command-line editing added 2026-07-11: Ctrl-W deletes the previous word, Cmd-Backspace clears the line. **`:e ` deferred to [v0.5](v0.5-palette-and-multi-file.md)** — opening another file needs host file-IO + buffer switching, which is v0.5's multi-file work (gated behind Spikes 11/14); half-building it here ahead of its dirty-buffer handling wasn't worth it. - [x] Ahead of schedule / unscheduled: `:fmt` Markdown formatter (table alignment, blank-line collapse, trailing-whitespace strip)