YAMLQuill, A Structured Editor for YAML
Just a few days after building JSONQuill, I found myself thinking it would be nice to have the same structured editing experience for YAML files, since I hate YAML. Config files, GitHub Actions workflows, and lots of other things want YAML, so it made sense to take what I learned with JSON and do the same.
So I built YAMLQuill. It’s a terminal-based structural YAML editor with vim-style keybindings, written in Rust. It shares the same core architecture as JSONQuill: parsing into a tree, vim navigation, undo/redo, registers, visual mode, etc., but it understands YAML’s unique features.
Here’s a quick demo showing navigation, anchors/aliases, and editing:
Where it differs from JSONQuill
YAMLQuill isn’t just JSONQuill with a different parser. YAML has features that JSON doesn’t, and the editor supports them natively:
Comments. YAML supports comments, and YAMLQuill does too. It preserves existing comments when you save, and you can add new ones with the c key. Comments are displayed inline in the tree view, so you can actually see what that weird flag is supposed to do.
Anchors and Aliases. YAML’s &anchor and *alias syntax for referencing the same value multiple times is fully supported. The editor shows anchor badges (&name) and alias nodes (*name), and you can navigate from an alias to its anchor by pressing Enter. The underlying anchor/alias structure is preserved during edits whenever possible.
String types. YAML has multiple ways to write strings: plain, literal (| for preserving newlines), and folded (> for wrapping). YAMLQuill displays which type each string is using and preserves the original style on save.
Multi-document support. Like JSONQuill handles JSONL files, YAMLQuill handles multi-document YAML files (separated by ---). Each document starts collapsed; expand with l to edit within it.
What it shares
Everything else you’re familiar with from JSONQuill works the same way:
- Full vim keybindings with count prefixes, marks, visual mode, named registers, and the jump list
- Pipe from stdin (
cat config.yaml | yamlquill) - Text search across keys and values, plus YAMLPath structural search
- Data safety: atomic writes, validation before save, optional backups
- Format preservation at the section level—unmodified parts of your file keep their exact original formatting
- Gzip support for
.yaml.gzfiles - 15 built-in color themes
Installation
On macOS via Homebrew:
1
2
brew tap joeygibson/tools
brew install yamlquill
Or grab a binary from the releases page, or build from source:
1
2
3
git clone https://github.com/joeygibson/yamlquill
cd yamlquill
cargo build --release
Try it out
If you spend your day editing YAML configs, give it a spin. The repo is at github.com/joeygibson/yamlquill—issues and feedback welcome.
