VSCode Markdown预览打不开需确认文件后缀为.md/.markdown、已保存,并启用Markdown Language Features和Preview扩展;导出PDF推荐Markdown Preview Enhanced,配置custom.css和YAML front matter解决中文、样式及代码块问题。

Markdown预览窗口打不开或不自动刷新
VSCode内置的Markdown支持默认启用实时预览,但很多人点开Ctrl+Shift+V(Windows/Linux)或Cmd+Shift+V(macOS)没反应,其实是因为当前文件没被识别为Markdown——必须确保文件后缀是.md或.markdown,且文件未处于“未保存”状态(即右上角无圆点)。如果已满足条件仍不生效,检查是否禁用了内置扩展:Markdown Language Features和Markdown Preview必须启用(在 Extensions 视图中搜这两项,确认开关为开)。
常见干扰项:某些第三方Markdown插件(如Markdown All in One)会接管预览逻辑,但它默认仍复用VSCode原生预览,无需额外配置;但如果装了Markdown Preview Enhanced,它会独占Ctrl+Shift+V,此时原生预览失效——要么卸载它,要么用它的快捷键Ctrl+K V唤出自己的预览窗。
导出PDF时中文乱码或排版错乱
VSCode原生不支持导出PDF,必须借助插件。最常用的是Markdown PDF(作者:yzane),但它默认使用phantomjs渲染,早已停止维护,对中文支持极差,导出后常出现方框、缺字、标题错位等问题。
推荐改用Markdown Preview Enhanced(作者:shd101wyy),它底层调用Puppeteer(基于Chromium),中文渲染稳定:
- 安装后,右键编辑器任意位置 → 选择
Export to PDF - 首次导出会自动下载Chromium(约150MB),需联网且等待数秒
- 导出前建议在文档顶部加YAML front matter指定字体,例如:
---\nstylesheet: ./style.css\n---
,并在同目录放style.css,内容包含body { font-family: "Microsoft YaHei", sans-serif; } - 若导出空白页,大概率是文档含非法HTML标签(如未闭合的
<div>)或MathJax公式语法错误,可临时删掉公式块再试
自定义PDF样式时CSS不生效
Markdown Preview Enhanced支持通过custom.css注入全局样式,但路径和加载时机容易出错:
- CSS文件必须放在VSCode工作区根目录下,命名为
custom.css(不能是pdf.css或其他名) - 样式仅对导出PDF生效,不影响实时预览窗;预览窗样式需单独配
previewTheme - 不要用
@import引入外部CSS,Puppeteer导出阶段不支持该语法 - 关键选择器要加
!important,例如:h1 { font-size: 28px !important; },否则可能被内置样式覆盖 - 页眉页脚需用
@page规则,且只在导出PDF时解析,例如:@page {\n @top-center {\n content: "My Doc";\n }\n}
导出PDF后代码块字体太小或无高亮
默认导出的代码块使用等宽字体但无语法高亮,且字号偏小。解决方法不是改Markdown本身,而是控制Puppeteer渲染行为:
- 确保文档中代码块标注语言,例如
```python而非```,插件才能触发高亮 - 在
custom.css中强制放大代码块:pre code {\n font-size: 14px !important;\n line-height: 1.5 !important;\n} - 若仍无高亮,检查插件设置:
markdown-preview-enhanced.enableExtendedSyntax必须为true,且markdown-preview-enhanced.codeBlockTheme设为github-dark等有效主题(主题文件需存在于插件目录themes子文件夹内) - 注意:部分主题(如
atom-light)在PDF中颜色对比度低,导致“看似没高亮”,换vs2015或a11y-dark更稳妥
导出PDF本质是网页快照,所有样式、字体、高亮都依赖前端渲染链路完整。任何一环断开(比如Chromium下载失败、CSS路径错、语言标识缺失),都会导致最终PDF和预期不符——别急着重装插件,先看输出面板里Markdown Preview Enhanced的日志有没有Puppeteer报错。



















