A simple, opinionated TODO management plugin for Neovim. Tasks live in a plain todo.txt file in your project directory and are managed entirely through the :Todo command.
{ "georgejdanforth/todo.nvim" }use "georgejdanforth/todo.nvim"Plug 'georgejdanforth/todo.nvim'todo.nvim uses a structured plain-text format with three sections and optional description blocks:
TODO:
- [T0] do something
- [T1] do a different thing
IN-PROGRESS:
- [T2] thing i'm currently working on
DONE:
- [T3] this is complete
@T0: do something
This is a description for task @T0
Task IDs (e.g. T0, T1) are assigned automatically and are stable -- they are never reused or renumbered.
| Command | Description |
|---|---|
:Todo init [path] |
Create a new todo.txt (defaults to cwd) |
:Todo add <name> |
Add a new TODO item |
:Todo start [id] |
Move a task to IN-PROGRESS |
:Todo done [id] |
Move a task to DONE |
:Todo todo [id] |
Move a task back to TODO |
:Todo describe [id] |
Create a description block and jump to it |
:Todo delete [id] |
Remove a task and its description |
:Todo open |
Open todo.txt in the current window |
:Todo sopen |
Open todo.txt in a horizontal split |
:Todo vopen |
Open todo.txt in a vertical split |
For start, done, todo, describe, and delete: the task ID can be a number (0) or prefixed (T0). If omitted, the task under the cursor in todo.txt is used.
No setup is required. The plugin works out of the box. If you want to pass configuration options in the future:
require("todo").setup({})