Skip to content

The editor

Markdown styles as you type, and the raw markers come back on whichever line the cursor sits on. You're always editing the characters that are actually in the file, never a rendering of them.

Put the cursor on a heading and the ## reappears. Move away and it styles again. Nothing is hidden from the line you're working on, which is the difference between this and a WYSIWYG editor that makes you guess what it wrote.

Three ways to look at a note

KeysView
⌘ECycle edit → split → preview
⌘⇧ETurn rich markdown off, showing the raw source

Split view puts the same buffer next to its rendered output:

Split view: the markdown source on the left, rendered preview on the right

With vim on, :e, :sp and :view set the three modes directly, and <Space>e, <Space>v, <Space>p are the leader keys for them.

⌘⇧E turns rich markdown off entirely, showing the file exactly as it sits on disk. Still syntax highlighted, just no longer hiding anything:

The same note with rich markdown off, showing raw markers on every line

Tip

That's worth knowing about for column work. Hidden markers take up no width, so a visual block spanning several lines is easier to aim when the source is showing. Settings → General has the same switch if you want rich markdown off for good.

Formatting

KeysWraps the selection in
⌘B**bold**
⌘I*italic*
⌘⇧KA markdown link, with the cursor where the URL goes

These belong to the editor rather than to the app, so they only fire with the editor focused and they can't be rebound in Settings.

With vim on, <Space>*, <Space>i and <Space>k do the same three from normal and visual mode, so you can select and wrap in one gesture. Bold is <Space>* rather than <Space>b because the asterisk is the marker it inserts, and b is backlinks.

:link takes the URL as an argument, which is where a URL wants to be typed:

:link https://example.com

With no argument it asks, exactly like ⌘⇧K.

Reading in preview

Preview scrolls under vim's own keys, so a long note reads without reaching for the mouse:

KeyMoves
j kA line
⌃d ⌃uHalf a screen
⌃f ⌃bA screen

In the editor, j and k move by visual line rather than by logical line, so wrapped prose behaves the way it looks.

Saving

Halcyon saves on its own a beat after you stop typing. The delay is a slider in Settings → General, from 250ms to 3000ms, defaulting to 700ms.

⌘S saves immediately. So do :w, :wq, :x and <Space>s.

You don't need to save before switching notes, closing a window, or quitting. The pending edit is flushed first.

The vim mode badge

With vim on, the editor's footer shows the current mode. It's the fastest way to answer "why isn't this key doing anything", which is nearly always because you're in insert mode when you meant to be in normal.

Vim can be switched off entirely in Settings → General, and everything else in the app keeps working. See Vim.

What the editor does with an external edit

If a note changes on disk while you have it open, Halcyon notices. With no unsaved changes in your buffer, it adopts the new content silently. With unsaved changes, it refuses to discard your work and says so instead:

This note changed on disk. Save to overwrite

Your edit is still in the editor. Saving writes it over the version on disk; closing the note without saving keeps the version on disk. Halcyon won't pick for you.

A note arriving from Sync behaves the same way, so there's only one thing to learn here.

Halcyon is a markdown notes app for macOS.