Skip to content
Yahm3Public

About

A better way to handle code todos in vim

Resources

Code of conduct

Contributing

Stars

6 stars

Watchers

0 watching

Forks

Latest commit

 

History

36 Commits

Folders and files

Repository files navigation

todos.vim

GitHub Repo stars GitHub last commit GitHub issues GitHub License Vim

A Vim plugin to manage your TODOs and FIXMEs efficiently without leaving your editor.

Demo

todos.vim demo

Features

  • Project-wide Scanning: Automatically greps your working directory for TODO and FIXME comments.
  • Priority Sorting: Organizes tasks by priority (FIXMEs are prioritized over TODOs).
  • Native Navigation: Press <Enter> on any task in the list to immediately jump to that file and line.
  • Custom Syntax Highlighting: The todos.txt file is automatically color-coded for readability.
  • Smart Ignore: Respects your .todos.config file to skip heavy directories (like node_modules).

Installation

Vim

Note

These instructions are for vim-plug.

Add this to your .vimrc:

Plug 'Yahm3/todos.vim'

After adding to your .vimrc file, save and source it (:source $MYVIMRC), then install it with:

:PlugInstall

Neovim

Note

These instructions are for LazyVim.

Create a new file in ~/.config/nvim/lua/plugins/todos.vim.lua and paste the contents below:

return {
  { "Yahm3/todos.vim" },
}

Save and source(source ~/.config/nvim/init.lua) you init.lua file.

Configuration

To prevent the plugin from scanning heavy or irrelevant directories (like dependencies or build folders), create a .todos.config file in the root of your project directory.

List the directories you want to ignore on separate lines. You can also use inline comments:

node_modules/ "Ignores the entire folder
build/ " Ignores the compiled build folder
.env "Ignores the environment file

Commands

  • :Time [args] — Displays the month, day, and time (e.g., Jul 21 17:29).

  • Pass d to show only the day.

  • Pass t to show only the time.

  • :TdGen — Generates (or updates) a todos.txt file in your current working directory containing all TODOs/FIXMEs.

  • :TdOpen — Opens the todos.txt file. If it doesn't exist, it generates it first.

  • :TdIgnore — Appends todos.txt to .gitignore, creating the file if it doesn't exist.

Mappings

By default, the plugin maps the following keys in normal mode:

  • <leader>td — Generates and updates the todos.txt file.
  • <leader>tdo — Opens the todos.txt file.
  • <leader>tdi — Appends todos.txt to .gitignore, creating the file if it doesn't exist.

Inside the todos.txt buffer:

  • <CR> (Enter) — Jump directly to the file and line of the TODO/FIXME under your cursor.

Documentation

For more detailed information, view the built-in help documentation inside Vim/Neovim:

:help todos

About

A better way to handle code todos in vim

Resources

Code of conduct

Contributing

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages