Zed, for this repo
The one that cost an afternoon
Autosave is off by default. Edits live in the buffer until you press
ctrl-s, and an unsaved tab shows a filled dot instead of its close button.
A build that does not reflect what is on screen is almost always this.
// settings.json — ctrl-shift-p → "zed: open settings"
{
"autosave": "on_focus_change"
}
Worth setting for prose
{
"soft_wrap": "editor_width",
"file_types": { "Markdown": ["md"] },
"languages": {
"Markdown": {
"soft_wrap": "editor_width",
"remove_trailing_whitespace_on_save": false
}
}
}
Trailing whitespace is off deliberately for Markdown: two trailing spaces is a hard line break, and stripping them on save silently rewrites the text.
Snippets
Zed reads snippets from ~/.config/zed/snippets/markdown.json. A front
matter block worth having:
{
"Journal entry": {
"prefix": "jrn",
"body": [
"+++",
"title = '$1'",
"date = ${2:2026-01-01T09:00:00-06:00}",
"draft = true",
"tags = [$3]",
"archives = [\"${4:2026}\", \"${5:2026-01}\", \"${6:2026-01-01}\"]",
"resolves = \"JRN ${7:26-000}\"",
"aliases = [\"/r/${7:26-000}/\"]",
"description = '$8'",
"+++",
"",
"$0"
]
}
}
hugo new does the same job from the archetype and fills the dates
correctly. The snippet is for when you are already in the editor.
Keys that transfer
The bindings borrow from Sublime and VS Code, so most muscle memory carries.
The ones used constantly here: ctrl-p file finder, ctrl-shift-f project
search, ctrl-shift-p command palette, ctrl-``` terminal panel — which is where hugo server -D` should run so the preview and the editor are one
window.