VSCode原生不支持Marp幻灯片实时预览,必须安装官方Marp for VS Code扩展(作者yusukebe);它识别marp:true前置声明、---分页符及theme等配置,提供预览、导出PDF/HTML等功能。

VSCode 原生不支持 Marp(marp)幻灯片的实时预览,必须靠扩展补足解析逻辑和渲染流程;Marp 依赖特定 front-matter(如 marp: true)、自定义语法(-- 分页、theme:)、以及 PDF 导出等能力,这些都不在 VSCode 内置 Markdown 预览范围内。
安装 Marp for VS Code 扩展是唯一可靠起点
别用 Markdown All in One 或 Markdown Preview Enhanced 替代——它们不识别 marp: 开头的 YAML front-matter,也不会把 -- 当成分页符处理。官方 Marp for VS Code(作者:yusukebe)专为此设计,安装后自动启用以下行为:
- 检测文件开头是否含
marp: true或marp:(空值也认) - 将
--(单独一行)识别为幻灯片分页,而非普通水平线 - 支持
theme:、size:、paginate:等 Marp 特有配置项 - 右下角状态栏显示 “Marp” 图标,点击可快速切换 HTML/PDF 导出或打开浏览器预览
注意:该扩展默认禁用自动预览,首次需手动触发;快捷键是 Ctrl+Shift+P → 输入 Marp: Preview Slide 回车,或右键编辑器选择 Preview Slide。
预览窗口不刷新?检查文件是否已保存 + front-matter 格式是否正确
Marp 预览和 VSCode 原生预览一样,只在文件保存后刷新——改完不按 Ctrl+S,页面不会变。但更常卡在这里的是 front-matter 格式错误:
-
marp: true必须顶格写,前面不能有空格或注释 - YAML 块必须用
---包裹,且前后都需换行(即空行 +---+ 配置 +---+ 空行) - 若用了
theme: gaia却没装对应主题包,预览会空白;此时应先删掉theme:行测试基础渲染 - 路径引用(如
)按工作区根目录解析,不是 .md 文件所在目录
错误示例:marp:true(缺空格)、---marp: true---(没换行)、// marp: true(注释不生效)都会导致 Marp 模式未激活,退化为普通 Markdown 渲染。
想边写边看?开启实时刷新需配合 Auto Save 和 Marp 设置
Marp 扩展本身不提供“打字即刷新”,但可通过组合设置逼近实时效果:
- 开启 VSCode 自动保存:
files.autoSave设为afterDelay(默认 1000ms)或onFocusChange - 在
settings.json中添加:"marp.preview.refreshOnSave": true(该配置存在且有效,不是所有版本都默认开启) - 禁用
marp.preview.doubleClickToSwitchToEditor,避免误点预览区切回编辑器中断流程 - 如果用 Remote-SSH,确保
marp.preview.useWebview为true,否则本地 Marp 引擎无法加载远程资源
此时修改内容 → 失去焦点或等待延迟 → 自动保存 → 预览窗自动刷新。比纯手动快,但仍有毫秒级延迟,不是 Typora 那种 DOM 级响应。
导出 PDF 失败或样式错乱?重点查主题路径与 Chromium 兼容性
Marp 导出 PDF 本质是用内置 Chromium 渲染 HTML 后转 PDF,常见失败点不在 Markdown 本身:
- 自定义 CSS(如
style.css)路径必须相对于工作区根目录,且需在 front-matter 中声明:import: ./style.css - 若导出 PDF 是空白页,大概率是 Chromium 渲染超时,可在设置中调大:
"marp.export.timeout": 30000(单位毫秒) - Windows 上若弹出“Failed to launch browser”,说明 VSCode 内置 Chromium 损坏,可尝试关闭
marp.export.useBuiltInBrowser改用系统 Chrome(需提前配置marp.export.chromePath) - 使用
math: true渲染公式时,若 PDF 中公式位置偏移,是 KaTeX 与 Marp 主题 CSS 冲突所致,临时方案是关掉 math 或换 theme
最易被忽略的是:Marp 的 PDF 导出不支持所有 CSS Flex/Grid 布局,尤其是复杂嵌套居中,建议用 position: absolute 或 text-align: center 这类兼容性更强的方式对齐内容。


















