Editing vs Reading — Changing Text in Rho
The Rho desktop app is more than a reader — it's a notebook: edit your prose in place, right in the rendered view, what-you-see-is-what-you-get. This page covers how to switch modes, what you can and can't change, and the shortcuts that keep writing fast. Want to see it render first? Open any document, then come back and try as you read.
Two modes: Reading / Editing
The toolbar at the top of a document tab has one icon that toggles between reading and editing (document tabs only — the canvas has its own toolbar):
| Icon | Mode | Means |
|---|---|---|
| 👁 eye | Reading | Default. Pure rendered view; links navigate, text is read-only. |
| ✏️ pencil | Editing | In-place editing. Static prose is editable; interactive blocks stay locked. |
Once you're in editing mode, the toolbar gains Undo / Redo / Save buttons (they don't appear in reading mode).
Editing mode defaults to WYSIWYG-lite — edit directly in the rendered view, what you see is what it will be. If you'd rather see and edit the raw markdown, a small toggle in the bottom-right corner switches over — see Source mode below.
What you can and can't change
This line is drawn on purpose: the free app edits static prose only; interactive content belongs to Rho Editor.
You can edit
- Paragraphs
- Headings (H1–H6)
- Lists (bullet / numbered / task) and blockquotes — simple ones (see Known limits)
Stays locked (read-only widgets in edit mode — not a byte changes)
- Interactive blocks (
interact), animated charts - Image blocks, canvas
mermaid,vegadiagrams- Math formulas
Locked blocks still render fully and stay interactive in edit mode — you just can't change their content. This guarantees that no matter how you edit, an interactive block can never be corrupted, and what you save is always valid markdown any reader can open as plain text.
Not yet editable: tables, complex/nested lists, and the prose inside callout / column containers. See Known limits.
Source mode (when you want the raw text)
WYSIWYG-lite locks the interactive blocks — but what if you want to fix one character inside an interactive block, tweak the frontmatter, or just write in raw markdown?
In editing mode, the bottom-right status bar has a small text-less sliding switch:
- Switch to the left (default) = Live preview: edit in place in the rendered view (everything above).
- Slide it right = Source mode: the whole document becomes a syntax-highlighted markdown source editor.
In source mode, everything is plain text — prose, interactive-block DSL, frontmatter, all editable. Because you're editing the source directly rather than the rendered view, there are no "locked blocks" here — it's your universal escape hatch.
Both views bind the same source, so switching is lossless: edit in either and the other catches up. Ctrl+S saves the same in both. Undo is continuous too — make a bunch of edits in source, switch back to live preview, and Ctrl+Z reverts the whole source-editing session in one step.
This is Obsidian's Live Preview ⇄ Source switch. Leave editing mode and come back, and you're back in live preview by default.
Want to edit interactive content visually (drag-and-drop, never touching source)? That's Rho Editor (paid) — source mode gives you "edit as text," not visual authoring.
Editing a piece of text
- Switch to editing mode. Editable paragraphs and headings show a faint highlight on hover / focus.
- Click into any paragraph or heading; the caret lands, and you type.
- Click elsewhere (or move focus away) to commit the change — the document goes "unsaved," and a dirty dot appears on the tab.
- Ctrl+S saves to disk.
A brand-new blank document prompts a Save As dialog the first time you save; after that Ctrl+S writes directly. Closing a tab with unsaved changes asks for confirmation — nothing is silently lost.
Creating paragraphs
| Action | Result |
|---|---|
| Enter | Splits the current block in two at the caret. Pressing Enter in a heading makes the next line a body paragraph (Word / Obsidian convention). |
| Shift+Enter | Soft line break within the block (no split). |
| Hover between blocks | A dashed line + ⊕ appears in the gap; click to insert a new paragraph there — even between locked blocks. |
| Click the empty area below the text | Appends a new paragraph at the end. |
Empty out a paragraph and leave it, and Rho keeps the empty block (it won't auto-delete) — you can click back in and keep writing any time.
Type-to-convert: type a markdown marker, get the block
At the start of a line, type a common markdown marker + a space and it becomes that block the moment the space lands (the Typora / Obsidian feel), caret preserved:
| Type | Becomes |
|---|---|
# … ###### |
Heading H1–H6 |
- / * / + |
Bullet list |
1. |
Numbered list |
- [ ] / - [x] |
Task list (with checkbox) |
> |
Blockquote |
--- / *** / ___ |
Divider |
After converting to a list or quote you keep typing: Enter starts the next item, Enter on an empty item exits the list. Delete the prefix to drop back to a paragraph.
Block handle menu (headings, precise): when a block has focus, a ⠿ handle sits at its left edge — its menu offers Body / H1–H6, click one to convert.
Inline formatting: select to get the bubble
Select some text inside an editable block and a bubble menu floats above it (it stays hidden for cross-block selections, selections touching a locked block, or no selection):
| Button | Action | Shortcut |
|---|---|---|
| B | Bold **…** |
Ctrl+B |
| I | Italic *…* |
Ctrl+I |
<> |
Inline code `…` |
Ctrl+E |
Strikethrough ~~…~~ |
— | |
| 🔗 | Link […](url) |
— |
Click 🔗 to switch to a URL field; if the selection is already inside a link, the current address is prefilled — edit or remove it, Esc to cancel. Pressing B again on already-bold text (or clicking the bubble) removes the bold — every format is a toggle.
Undo / Redo
Rho's undo has two tiers that feel like one to you:
- Typing tier: uncommitted input within a block undoes character / word at a time, like any text field.
- Structural tier: committed changes (splits, inserts, heading conversions, formatting…) go on a document-level history stack, one step per commit.
| Shortcut | Action |
|---|---|
| Ctrl+Z | Undo |
| Ctrl+Shift+Z or Ctrl+Y | Redo |
The toolbar's ↶ / ↷ buttons do the same (visible in edit mode only).
Typing in other languages (IME)
The whole editing flow is IME-friendly: while you're composing characters (Pinyin, etc.), heading conversion and paragraph splitting won't fire, and a full-width # won't be mistaken for a heading — only a truly committed half-width # triggers it. Write comfortably in any language.
Safety guarantees
- Interactive blocks are never rewritten — they never go through any "DOM back to markdown" path, so they can't be corrupted by construction.
- The file is always valid markdown — whatever you save opens as plain text in any reader.
- Frontmatter is preserved exactly — the YAML metadata at the top is byte-for-byte untouched, so saving produces no spurious diff noise.
- External changes won't clobber your edits — while you're editing or have unsaved changes, Rho pauses disk watching for that file; the disk only receives what you write out.
Known limits
These are not editable yet — deliberate boundaries that open up as needed:
- Complex lists / blockquotes — simple lists and quotes (one paragraph per item, no nesting) are editable; nested lists, multi-paragraph items, a quote containing a list stay locked — read-only beats risking corruption.
- Tables — locked in edit mode (cell editing is much harder than lists; not done yet).
- Prose inside containers — paragraphs within callouts and column cards aren't editable yet (they aren't top-level blocks).
- Inserting images in a document — document edit mode has no image-insert entry point yet (the canvas supports it). Advanced image editing (crop / filters, etc.) always belongs to Rho Editor.
Want to visually edit interactive content, full WYSIWYG with hidden source, or advanced image editing? That's the domain of Rho Editor (paid). The free Rho app focuses on making "change the prose" feel effortless.
Quick reference
| To do | How |
|---|---|
| Enter / leave editing | Toolbar ✏️ / 👁 |
| Save | Ctrl+S |
| Make a heading | Type # …###### at line start, or the ⠿ handle menu |
| List / quote / divider | Type - , 1. , - [ ] , > , --- at line start |
| Split / soft break | Enter / Shift+Enter |
| Insert between blocks | Hover the gap, click ⊕ |
| Bold / italic / code | Select text → bubble, or Ctrl+B / I / E |
| Add a link | Select text → bubble 🔗 |
| Undo / redo | Ctrl+Z / Ctrl+Shift+Z (or Ctrl+Y) |
| Source ⇄ live preview | The mini slider in the bottom-right status bar |