Vim + Grimoire. A magical tome for crafting stories.
Vimoire is a standalone Neovim app for writing long-form fiction. Modal editing, manuscript structure, and export to real formats—without the cruft of an IDE or the mouse-dependency of traditional writing software.
Vimoire is almost entirely vibe-coded—built with heavy LLM assistance to scratch a personal itch. This means there are likely bugs, antipatterns, or rough edges I haven't caught. If you spot something off, please open an issue. Feedback genuinely welcome.
Vimoire takes advantage of the neovim feature that if you start neovim (or neovide) with NVIM_APPNAME=<appname> neovim then instead of looking in ~/.config/nvim it will look in ~/.config/<appname> and you can create a whole different editor experience.
Because writing a novel in VS Code feels wrong. Because Google Docs makes you reach for the mouse. Because Word is where prose goes to die in a sea of ribbon menus.
Writers who've touched vim know the feeling: your fingers think in motions, not clicks. ciw to replace a word. } to jump paragraphs. /dragon to find every mention of that character you keep forgetting to describe.
Vimoire takes that muscle memory and wraps it in an environment built for stories, not code.
Organize your book with chapters, pages, and sections:
- Chapters — numbered, the spine of your story
- Pages — unnumbered content (title pages, interludes, appendices)
- Sections — containers that group entries (organizational only—they don't appear in exports)
Reorder with K/J in the navigator. No drag-and-drop required.
Keep your worldbuilding close:
- Characters — who's in your story
- Settings — where things happen
- Reference — research, timelines, plot notes
All searchable via <leader>fp.
Vimoire remaps navigation for paragraphs, not code:
j/kmove by display line, not buffer lineA/Iwork at display line boundaries)/(navigate sentences- Focus mode centers your prose and hides the chrome
The g prefix escapes to buffer lines when you need them.
If your book lives in a git repository, Vimoire commits your work automatically as you write — quietly, a few times per session at most. Mark milestones ("finished ch. 8 rough draft") with :GitCommit, which opens a commit editor showing files changed and the word delta. No terminal required, nothing to remember.
When it's time to share your work:
:Export
Pandoc-powered export to EPUB, DOCX, and PDF. Chapter numbering, scene breaks, and proper formatting—handled.
Twelve moods for writing. Switch with :ViewTheme or set in config.
Typewriter mode — keeps the cursor vertically centered while you write. Toggle with :ViewTypewriter, persists across sessions.
Plotting boards — grid-based planning for plot threads, character arcs, or any tabular structure. Navigate with hjkl, edit cells in popups.
Snippets — extract text to reuse anywhere.
Marks — inline annotations that don't export.
Comments — attach notes to any text range for self-editing and review. Select text, <leader>cc to annotate, K to view, ]c/[c to navigate. Perfect for marking sections that need work, tracking revision notes, or beta reader feedback. Each theme uses a unique sign in the gutter.
Notes — per-chapter scratch space, spellcheck-free.
Book-local dictionary — teach it your character names once.
Writing stats — session word count, book total, reading time, chapter breakdown. Set goals in book.yml to track progress toward your target.
- Launch Vimoire (see Installation)
- From the dashboard, create a new project or open an existing one
- Use the navigator (
<C-s><C-s>) to browse your manuscript ato add chapters,K/Jto reorder,<CR>to open- Write.
<leader>fmto jump between chapters. :Exportwhen you're ready to share
Your prose lives in plain markdown files—readable anywhere, forever.
# Clone the repo
git clone https://github.com/dewyze/vimoire ~/dev/vimoire
# Symlink the app directory
ln -s ~/dev/vimoire/app ~/.config/vimoire
# Add bin to your PATH, or symlink the launchers
ln -s ~/dev/vimoire/bin/vimoire /usr/local/bin/vimoire
ln -s ~/dev/vimoire/bin/term-vimoire /usr/local/bin/term-vimoireTwo ways to launch:
vimoire— GUI via Neovide (recommended). Single-instance: re-launching focuses the running window instead of opening another, and it carries a Vimoire Dock icon.term-vimoire— terminal Neovim in the current shell; a fresh instance per tmux pane.
To make the GUI launcher use terminal Neovim instead of Neovide:
export VIMOIRE_EDITOR=nvimbin/release # promote app/ to ~/.config/vimoire + rebuild/install ~/Applications/Vimoire.app
bin/vimoire # dev mode: run the live working tree (own config root; doesn't touch the release)The installed app always runs the last bin/release; the checkout launcher always runs
the working tree. Re-run bin/release after upgrading Neovide (the bundle clones it).
Custom icon: 1024×1024 assets/icon.png, then bin/build-icon.
User configuration lives in ~/.vimoire/ (created automatically on first launch).
Customize via ~/.vimoire/config.lua:
return {
colorscheme = "parchment",
plugins = {
{ "tpope/vim-surround" },
},
}See docs/CONFIGURATION.md for all options.
- Neovim 0.10+
- Pandoc (for export)
- MacTeX or TeX Live (for PDF export)
- Neovide (optional, recommended)
- A Nerd Font (for navigator icons)
- Writers are professionals. The tool should stay out of the way.
- Muscle memory matters. If you know vim, you know 90% of Vimoire.
- Plain text is forever. Your prose lives in markdown files you can read anywhere.
- Fewer features, done well. We're not building Scrivener. We're building a grimoire.
Vimoire is built on the shoulders of giants:
- Neovim — the engine that makes modal prose editing possible
- Neovide — the GUI that makes it feel like a native app
MIT
"The first draft is just you telling yourself the story." — Terry Pratchett
And the second draft is you telling vim to :%s/said/muttered/gc.






















