OXY2DEV/markview.nvim · 上手攻略
- 仓库:OXY2DEV/markview.nvim
- 链接:https://github.com/OXY2DEV/markview.nvim
- 分类:academic-writing
- 作者:Tom
- 更新:2026-08-19
是什么
markview.nvim 是一款专为 Neovim 打造的所见即所得富文本预览插件,支持 Markdown、HTML、LaTeX(数学公式)、Typst、AsciiDoc 五种格式的实时渲染。与传统外部预览工具不同,它直接在 Neovim 内部完成渲染,支持混合编辑模式(编辑+预览同步)和分屏预览模式。
核心定位是"hackable"——几乎所有渲染行为都可以通过配置覆盖或替换,适合对预览效果有定制需求的高级用户。动态高亮组自动跟随 colorscheme 变化,支持 786 种 HTML 实体名称、1920 个 GitHub emoji 简写、2056 个 LaTeX 数学符号定义。
⚠️ 注意:该插件推荐不要懒加载(lazy=false),且应在 colorscheme 加载之后再初始化,否则高亮组可能异常。
解决什么问题
- 无需外部浏览器预览:传统方案需要浏览器或外部工具;markview.nvim 在 Neovim 内直接渲染
- 混合编辑:Splitview 模式可边写边看渲染效果;Hybrid 模式可编辑时实时更新对应区块渲染
- 学术写作:内置 LaTeX 数学公式、Typst 完整支持,Neovim 原生环境无需切换工具
- 高度可定制:换行模式、callout 样式、语法高亮几乎全部可配置
- Treesitter 集成:与主流语法高亮方案无缝配合,支持 treesitter 注入扩展
快速安装
依赖前提
- Neovim ≥ 0.10.3(必需)
- Tree-sitter 解析器(需手动安装):
:TSInstall markdown markdown_inline html latex typst yaml
⚠️ Windows 用户如遇 LaTeX 解析器问题,可能需要额外安装 tree-sitter CLI。
- Tree-sitter 兼容 colorscheme(推荐任意 treesitter-based 主题)
- Nerd Fonts(推荐安装,否则部分图标无法显示)
- mini.icons 或 nvim-web-devicons(可选,用于文件图标)
使用 uv 安装
uv pip install markview.nvim
# 或 luarocks(版本可能稍落后)
:Rocks install markview.nvim
插件管理器安装(lazy=false 是关键)
-- lazy.nvim(不要 lazy 加载!)
return {
"OXY2DEV/markview.nvim",
lazy = false,
-- 可选:blink.cmp 补全支持
-- dependencies = { "saghen/blink.cmp" },
}
" packer.nvim
Plug 'OXY2DEV/markview.nvim'
初始化配置(init.lua)
-- 确保 colorscheme 在 markview 之前加载
-- vim.cmd.colorscheme('tokyonight') -- 你的主题
require('markview').setup({
preview = {
icon_provider = "internal", -- "mini" 或 "devicons" 也可
},
markdown = {
wrap = true, -- 开启自动换行
hl_inline_code = true,
},
latex = {
math = {
enabled = true,
},
},
})
安装后检查
:checkhealth markview
-- 运行此命令检查是否有潜在配置问题
核心用法
基础命令
| 命令 | 说明 |
|---|---|
:Markview toggle |
切换当前 buffer 预览 |
:Markview enable |
全局启用预览 |
:Markview disable |
全局禁用预览 |
:Markview splitToggle |
打开/关闭分屏预览 |
:Markview render |
手动刷新预览 |
:Markview HybridToggle |
切换混合编辑模式 |
分屏预览(Splitview)
:Markview splitToggle
滚动自动同步,可在当前窗口编辑、左窗口实时预览,适合写长文时边写边看。
混合编辑模式(Hybrid)
:Markview HybridToggle " 全局切换
:Markview hybridToggle " 仅当前 buffer
:Markview linewiseToggle " 行级混合模式(更精细的编辑粒度)
LaTeX 数学预览
行内公式:$E = mc^2$
独立数学块:
$$
\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}
$$
支持命令:\frac{}{}, \sin, \cos, \lim, \sqrt{}, \mathbb{}, \mathbf{} 等 2056+ 符号
Markdown Callout 语法
> [!NOTE]>
> 这是 note callout
> [!WARNING]>
> 注意这个警告
AsciiDoc 预览
= Document Title
== Section
[NOTE]
====
这是 note 块
====
* 列表项
** 嵌套
典型适用场景
| 场景 | 推荐功能 |
|---|---|
| 写 Markdown 文档/博客 | Splitview + 自动换行 |
| 学术论文(LaTeX 公式) | LaTeX 数学块渲染 + Hybrid |
| Obsidian PKM 用户 | Obsidian 扩展语法(block ref、标签、内部链接) |
| Typst 文档写作 | 原生 Typst 语法支持 |
| AsciiDoc 技术文档 | 分屏预览 + callout |
| 预览 HTML 页面效果 | HTML void/container 元素渲染 |
坑与注意
- 不要 lazy-load:插件本身已实现懒加载逻辑,若在外层再套 lazy 反而导致预览加载延迟
- colorscheme 加载顺序:透明 colorscheme 用户如遇高亮异常,参考 wiki#transparent-colorschemes
- modeline 设置 wrap 的问题:若用 modeline 设置
set wrap,由于textoff为 0,可能导致换行异常——这是上游 Neovim 行为,非插件 bug - 代码块后内联代码不识别:markdown parser 边界问题,如果一行跟在代码块后是空的,内联代码块可能不被识别——这是 markdown/markdown_inline treesitter 解析器的已知限制
- YAML 预览需额外 parser:
yamltree-sitter parser 需单独安装 - luarocks 版本可能落后:GitHub release 会比 main 分支稍旧,如需最新功能用插件管理器直接拉 main
与同类对比
| 工具 | 优势 | 劣势 |
|---|---|---|
| markview.nvim | 原生内嵌、多格式支持、混合编辑、可高度定制 | 仅 Neovim、需 tree-sitter 配置 |
| ** grip(GitHub 风格)** | 服务器模式、多人协作 | 非原生、需要外部服务 |
| markdown-preview.nvim | 浏览器渲染、与 GitHub 风格一致 | 非原生、JS 渲染慢 |
| glow(CLI) | 免配置、速度快 | 无交互编辑 |
| typst-preview | Typst 原生渲染 | 仅 Typst、非 Neovim 专用 |
markview.nvim 是 Neovim 原生富文本预览最完整的方案,在多格式和混合编辑上有明显优势;glow 等 CLI 工具适合纯阅读场景。
一句话推荐结论
如果你用 Neovim 写 Markdown/LaTeX/Obsidian 笔记,追求编辑-预览同步的流畅体验,markview.nvim 是目前 Neovim 生态里多格式支持最完整、定制灵活性最高的原生预览方案——前提是你愿意花 10 分钟配置 tree-sitter。
- Wiki(配置大全):https://github.com/OXY2DEV/markview.nvim/wiki/Home
- Releases:https://github.com/OXY2DEV/markview.nvim/releases
- Neovim 版本要求:≥ 0.10.3
- 许可证:MIT