๐Ÿ—’๏ธ FKNotes.nvim

October 16, 2025 ยท View on GitHub

๐Ÿ—’๏ธ FKNotes.nvim

Inline notes, tasks, and TODOs for Neovim, inspired by the FkVim ecosystem.

FkVim Ecosystem

Features โ€ข Installation โ€ข Usage & Syntax โ€ข Customization โ€ข Contributing


FKNotes.nvim brings powerful, inline note-taking and task management directly into your Neovim workflow. It combines the convenience of todo-comments.nvim with a persistent task database and a modern UI, all tightly integrated with the FKvim ecosystem.

โœจ Features

  • Flexible Inline Syntax: Capture tasks and notes naturally with @fknotes.
  • Smart Parsing: Recognizes priorities, due dates, and tags in any order.
  • Relative Due Dates: Set deadlines with intuitive formats like -2d (2 days from now), -3w (3 weeks), or -1m (1 month).
  • Flexible Priorities: Specify priority with @high or as a tag like #medium.
  • Granular Highlighting: todo-comments.nvim-style highlighting for each part of your note.
  • Persistent Storage: Inline tasks are saved to a JSON file and won't be lost when you close the buffer.
  • UI for Management: A clean and modern UI to browse, create, and manage tasks and notebooks.
  • Gutter Signs & Diagnostics: Get instant visual feedback for your notes in the sign column and diagnostics panel.
  • Theme Aware: Dynamically adapts to your colorscheme for a native look and feel.

๐Ÿงฉ Dependencies

FkNotes.nvim requires the following plugin to work:

๐Ÿš€ Installation

Install with your favorite plugin manager.

with lazy.nvim

{
  'flashcodes-themayankjha/Fknotes.nvim',
  dependencies = { "MunifTanjim/nui.nvim" },
  config = function()
    require('fknotes').setup({
      -- your configuration here
    })
  end
}

โš™๏ธ Configuration

Here are the default settings. You only need to include the keys you wish to override in your setup() call.

require('fknotes').setup({
  -- General settings
  default_note_dir = vim.fn.expand('~/notes'), -- Default directory for notes and tasks

  -- UI settings
  ui = {
    border_style = 'rounded', -- 'rounded', 'single', 'double', 'solid'
    -- Window dimensions
    menu_width = 55,
    menu_height = 15,
    task_browser_width = 80,
    task_browser_height = 20,
  },

  -- Keybindings
  keymaps = {
    open_menu = "<leader>fn",
    new_task = "<leader>nt",
    browse_tasks = "<leader>ln",
    new_notebook = "<leader>nn",
  }
})

๐Ÿ“ Usage & Syntax

Inline Task Syntax

The power of FKNotes lies in its flexible inline syntax. Start a line with @fknotes followed by a TAG and a colon.

@fknotes <TAG>: <Your Title> [@priority | #priority] [-<date>] [#tags...]

  • TAG: TODO, FIX, NOTE, PERF, WARN, HACK, TASK. This is required.
  • Title: The description of your task.
  • Priority: Optional. Use either @<level> or #<level> (e.g., @high, #medium).
  • Due Date: Optional. Use an absolute date (-YYYY-MM-DD) or a relative one (-2d, -3w, -1m, -1y).
  • Tags: Optional. Add as many #tags as you like.

The metadata (priority, date, tags) can be in any order after the title.

Examples

-- A simple TODO
-- @fknotes TODO: Implement the new feature

-- A complex task with metadata in a different order
-- @fknotes FIX: Bug in the API response -2d #fkvim @high

-- A note with a relative date and a tag
-- @fknotes NOTE: Review the documentation -1w #docs

-- A performance task with a priority tag
-- @fknotes PERF: Optimise database queries #high #db

Commands

CommandDescription
:FkNotesOpen the main FKNotes menu.
:FkNewTaskOpen the form to create a new task.
:FkAllTasksOpen the task browser to view all tasks.
:FkNewNotebookOpen the form to create a new notebook.

๐ŸŽจ Customization

FKNotes provides granular highlight groups so you can customize the look and feel to match your theme perfectly.

Highlighting Example

For a note like @fknotes FIX: Critical bug @high -2d #auth:

  • @fknotes is highlighted with FkNotesKeyword (Yellow)
  • FIX: is highlighted with FkNotesTagFIX (Red Background, White Text)
  • Critical bug is highlighted with FkNotesTitleFIX (Red Text)
  • @high is highlighted with FkNotesPriorityHigh (Red Text)
  • -2d is highlighted with FkNotesMeta (White/Grey Text)
  • #auth is highlighted with FkNotesMeta (White/Grey Text)

Highlight Groups

You can override any of these groups using vim.api.nvim_set_hl.

GroupDescription
FkNotesKeywordThe initial @fknotes keyword.
FkNotesTag<TAG>The tag itself (e.g., FkNotesTagFIX).
FkNotesTitle<TAG>The title text (e.g., FkNotesTitleFIX).
FkNotesPriorityHighHigh priority text (@high or #high).
FkNotesPriorityMediumMedium priority text.
FkNotesPriorityLowLow priority text.
FkNotesMetaDue dates and #tags.

๐Ÿค Contributing

Contributions, issues, and feature requests are welcome! Feel free to check the issues page.

๐Ÿ“œ License

This project is licensed under the MIT License. See the LICENSE file for details.


Made with โค๏ธ by Mayank Jha