YousefHadder/markdown-plus.nvim

github github
programming-languages-supportmarkdown-and-latex
stars 231
issues 3
subscribers 1
forks 6
CREATED

UPDATED


GitHub release (latest by date) LuaRocks License: MIT

Tests Neovim Lua

GitHub stars GitHub issues

All Contributors

507DBB8A-996C-44B7-88BE-ABB7BC1BFD92_1_201_a

A comprehensive Neovim plugin that provides modern markdown editing capabilities, implementing features found in popular editors like Typora, Mark Text, and Obsidian.

[!NOTE] v2.0 includes breaking changes. Please read the migration guide before upgrading: v2.0 Migration Guide (Wiki).

Key Features: Zero dependencies • Works with any filetype • Full test coverage (85%+) • Extensively documented

Examples features

https://github.com/user-attachments/assets/493361af-f191-4faf-ac1c-4da01222e37d

https://github.com/user-attachments/assets/5ddbc02c-68ba-44f0-8cc0-41807a23e788

Similar plugins

  • obsidian.nvim - A Neovim plugin for writing and navigating Obsidian vaults with features like autocompletion for notes/tags, link navigation, image pasting, and daily notes.
  • markdown.nvim - Configurable tools for markdown editing including inline style toggling (bold/italic/code), table of contents generation, list management, link handling, and heading navigation.
  • mkdnflow.nvim - A comprehensive markdown notebook/wiki plugin for fluent navigation with features like link following, to-do lists, table editing, section folding, buffer history navigation, and citation support.
  • mdnotes.nvim - A Markdown note-taking plugin with WikiLink support, hyperlink management, asset cleanup, sequential buffer history, table creation, and automatic list continuation.

Table of Contents

Quick Start

Using lazy.nvim:

{
  "yousefhadder/markdown-plus.nvim",
  ft = "markdown",
  opts = {},
}

That's it! The plugin will automatically activate with default keymaps when you open a markdown file.

v2.0 migration notes

  • vim.g.markdown_plus configuration was removed; call require("markdown-plus").setup(opts) (or lazy.nvim opts = {}) explicitly.
  • Default mappings now use <localleader> instead of <leader>.
  • Internal API change for plugin integrators: headers.parse_header() now expects (line, next_line) to support setext headings.
  • New toggle: features.html_block_awareness = true skips formatting/list/header operations inside HTML blocks.
  • New heading toggle: <localleader>ms switches ATX/setext heading style (H1/H2).
  • New thematic-break commands: <localleader>mh (insert) and <localleader>mH (cycle style).
  • Smart list outdent is enabled by default (list.smart_outdent = true) for parent-aware marker continuation.
  • New formatting escape toggle: <localleader>me (visual mode) escapes/unescapes markdown punctuation.
  • Code block module is now first-class: <localleader>mc insert/wrap, ]b/[b navigate, <localleader>mC change language.
  • Formatting defaults moved to avoid key collisions: strikethrough <localleader>mS, inline code <localleader>m\``, highlight m=, clear formatting mF`.
  • If needed, set vim.g.maplocalleader = "\\" (or your preferred key) before plugin setup.

Want to customize?

{
  "yousefhadder/markdown-plus.nvim",
  ft = "markdown",
  opts = {
    -- Your custom configuration here
  },
}

See Configuration for all available options.

License

MIT License - see LICENSE file for details.

Contributors ✨

Thanks goes to these wonderful people (emoji key):

This project follows the all-contributors specification. Contributions of any kind welcome!