org.nvim

Introduction

org.nvim implements Emacs Org mode in pure Lua. It reads and writes the same plain-text format, so files can be shared with Emacs.

It covers the parts of Org you use every day:

  • Outlines with Emacs-style folding, cycling, motions and text objects.
  • TODO workflows with logging, repeaters, priorities, tags and properties.
  • An agenda with a time grid, habits, custom commands and bulk actions.
  • Capture templates that file notes from any buffer.
  • Clocking, effort estimates, clock tables and column view.
  • Spreadsheet tables with #+TBLFM formulas.
  • Source blocks that run asynchronously (Babel), and tangling.
  • Export to HTML, LaTeX/PDF, Beamer, Markdown, ASCII, Org, ODT, iCalendar and Texinfo/Info, publishing projects, plus more formats via pandoc.

There are no dependencies: no tree-sitter parser, external binary or companion plugin.

Quick start:

  1. Open ~/org/todo.org and type * TODO Buy milk.
  2. Press <prefix>s to schedule it for today.
  3. Press <prefix>a then a to open the weekly agenda.
  4. Press <prefix>c then t in any buffer to capture a task.
  5. Press g? to list every keymap.

For a hands-on tour, open examples/tutorial.org from the plugin directory. It has a section with exercises for every feature. To try it with a throwaway config (agenda and capture included), run from the plugin directory:

nvim -u examples/minimal_init.lua examples/tutorial.org

examples/00-index.org links to one file per feature area, each with many examples, exercises and the result they should produce.

Conventions used in this manual:

  <prefix>    The value of mappings.prefix (default <leader>o).
  (ctx)       A context-sensitive key. When it does not apply at the cursor,
              the key falls back to its normal Vim behaviour (for example
              >> indents plain text and <C-a> increments numbers).
  target      Many Lua functions accept { bufnr = n, lnum = l } to act on
              a headline other than the one at the cursor.

Press g? in an org or agenda buffer for a list of active keymaps, grouped by topic. Each row lists every key of one command; i_ marks Insert-mode keys. / searches the list and { / } jump between sections.