Mkdnflow.nvim
Fluent navigation and management of markdown notebooks
Install / Use
/learn @jakewvincent/Mkdnflow.nvimREADME
Contents
- 🚀 Introduction
- ✨ Features
- 💾 Installation
- ⚙️ Configuration
- 🛠️ Commands & mappings
- 📚 API
- 🤝 Contributing
- 🔢 Version information
- 🔗 Related projects
🚀 Introduction
Mkdnflow is designed for the fluent navigation and management of markdown documents and document collections (notebooks, wikis, etc). It features numerous convenience functions that make it easier to work within raw markdown documents or document collections: link and reference handling (🔗 Link and reference handling), navigation (🧭 Navigation), table support (📊 Table support), list (📝 List support) and to-do list (✅ To-do list support) support, file management (📁 File management), section folding (🪗 Folding), and more. Use it for notetaking, personal knowledge management, static website building, and more. Most features are highly tweakable (⚙️ Configuration).
✨ Features
🧭 Navigation
Within-buffer navigation
- [x] Jump to links
- [x] Jump to section headings
Within-notebook navigation
- [x] Link following
- [x] Open markdown and other text filetypes in the current window
- [x] Open other filetypes and URLs with your system's default application
- [x] Browser-like 'Back' and 'Forward' functionality
- [ ] Table of contents window
🔗 Link and reference handling
- [x] Link creation from a visual selection or the text under the cursor
- [x] Link destruction
- [x] Follow links to local paths and other Markdown files
- [x] Follow external links (open using default application)
- [x] Follow
.bib-based references- [x] Open
urlordoifield in the default browser - [x] Open documents specified in
filefield
- [x] Open
- [x] Implicit filetype extensions
- [x] Support for various link types
- [x] Standard Markdown links (
[my page](my_page.md)) - [x] Wiki links (direct
[[my page]]or piped[[my_page.md|my page]]) - [x] Automatic links (
<https://my.page>) - [x] Reference-style links (
[my page][1]with[1]: my_page.md) - [x] Image links (
) — opened in system viewer - [x] Citations (
@citekeyor Pandoc-style[@citekey]) - [x] Footnotes (
[^1]with[^1]: Footnote text)
- [x] Standard Markdown links (
📊 Table support
- [x] Table creation
- [x] Table extension (add rows and columns)
- [x] Table formatting
- [x] Pandoc grid table support
- [x] Column alignment (left, right, center)
- [x] Paste delimited data as a table
- [x] Import delimited file into a new table
📝 List support
- [x] Automatic list extension
- [x] Sensible auto-indentation and auto-dedentation
- [x] Ordered list number updating
✅ To-do list support
- [x] Toggle to-do item status
- [x] Status propagation
- [x] To-do list sorting
- [x] Create to-do items from plain ordered or unordered list items
- [x] Customizable highlighting for to-do status markers and content
📁 File management
- [x] Simultaneous link and file renaming
- [x] As-needed directory creation
🪗 Folding
- [x] Section folding and fold toggling
- [x] Helpful indicators for folded section contents
- [x] Section heading level
- [x] Counts of Markdown objects (tables, lists, code blocks, etc.)
- [x] Line and word counts
- [ ] YAML block folding
🔮 Completion
- [x] Path completion
- [x] Completion of bibliography items
🧩 YAML block parsing
- [x] Specify a bibliography file in YAML front matter
🖌️ Visual enhancements
- [x] Conceal markdown and wiki link syntax
- [ ] Extended link highlighting
- [ ] Automatic links
- [ ] Wiki links
💾 Installation
Requirements:
- Linux, macOS, or Windows
- Neovim >= 0.9.5 (tested on 0.9.5, 0.10.x, and stable)
Install Mkdnflow using your preferred package manager for Neovim. Once installed, Mkdnflow is configured and initialized using a setup function.
<details> <summary>Install with Lazy</summary>require('lazy').setup({
-- Your other plugins
{
'jakewvincent/mkdnflow.nvim',
ft = { 'markdown', 'rmd' }, -- Add custom filetypes here if configured
config = function()
require('mkdnflow').setup({
-- Your config
})
end
}
-- Your other plugins
})
</details>
<details>
<summary>Install with Vim-Plug</summary>
" Vim-Plug
Plug 'jakewvincent/mkdnflow.nvim'
" Include the setup function somewhere else in your init.vim file, or the
" plugin won't activate itself:
lua << EOF
require('mkdnflow').setup({
-- Config goes here; leave blank for defaults
})
EOF
</details>
⚙️ Configuration
⚡ Quick start
Mkdnflow is configured and initialized using a setup function. To use the default settings, pass no arguments or an empty table to the setup function:
{
'jakewvincent/mkdnflow.nvim',
config = function()
require('mkdnflow').setup({})
end
}
🔧 Advanced configuration and sample recipes
Most features are highly configurable. Study the default config first and read the documentation for the configuration options below or in the help files.
<details> <summary>🔧 Complete default config</summary>{
modules = {
bib = true,
buffers = true,
conceal = true,
cursor = true,
folds = true,
foldtext = true,
links = true,
lists = true,
maps = true,
paths = true,
tables = true,
templates = true,
to_do = true,
yaml = false,
completion = false,
},
create_dirs = true,
silent = false,
wrap = false,
on_attach = false,
path_resolution = {
primary = 'first',
fallback = 'current',
root_marker = false,
sync_cwd = false,
update_on_navigate = true,
},
filetypes = {
markdown = true,
rmd = true,
},
foldtext = {
object_count = true,
object_count_icon_set = 'emoji',
object_count_opts = function()
return require('mkdnflow').foldtex
Related Skills
node-connect
345.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
104.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
345.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
345.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
