必须同时开启markdown.preview.scrollEditorWithPreview和markdown.preview.scrollPreviewWithEditor才能实现双向滚动同步,只开一个等于未启用;同步失效还可能因文件未保存、预览被刷新、插件冲突或MPE的enableSyncScroll被设为false。

为什么原生预览开了“同步滚动”还是不同步?
因为 VSCode 原生预览的同步滚动依赖两个配置项必须同时为 true,缺一不可:markdown.preview.scrollEditorWithPreview 和 markdown.preview.scrollPreviewWithEditor。只开一个,行为等同于全关——编辑区滚了,预览卡在顶部;预览滚了,编辑区不动。
常见错误现象:
- 在设置 UI 里只勾选了「Scroll Preview with Editor」,没找对另一个选项位置
- 用命令面板执行
Markdown: Open Preview(单标签页),该命令不触发同步逻辑,必须用Markdown: Open Preview to the Side - 预览窗口右上角没出现双向箭头图标,说明当前视图压根没加载同步能力
怎么用 Markdown Preview Enhanced 实现真正可靠的双栏同步?
VSCode 原生预览不处理 DOM 级滚动事件绑定,而 Markdown Preview Enhanced(MPE)通过 Webview 主动监听编辑器光标位置和滚动偏移,才能做到精准跳转。它不是“增强渲染”,而是重写了预览生命周期。
关键操作步骤:
- 安装插件后必须重启 VSCode,否则 Webview 初始化失败,
scrollSync不生效 - 不要拖拽预览标签到侧边栏——要用命令面板执行
Markdown Preview Enhanced: Open Preview to the Side - 检查状态栏右下角是否显示
MPE或KaTeX标识,没有就说明当前预览不是它启动的 - 禁用 VSCode 的
workbench.editor.enablePreview(即“单击文件不常驻标签”),否则预览页被回收会导致同步中断
同步滚动失效的四个隐藏触发条件
MPE 的同步不是“开个开关就永远有效”,它依赖编辑器状态、文件状态和渲染上下文三者同时满足。任意一项断开,滚动就脱钩。
-
settings.json中显式设了"markdown-preview-enhanced.enableSyncScroll": false(哪怕默认是true,手动覆盖后就失效) - 文件未保存:.md 文件已打开但内容为空,或刚新建未写入磁盘,MPE 不触发首次渲染
- 预览页被 F5 刷新或点击右上角刷新按钮——这会重建 Webview,原有事件监听全部丢失
- 同时启用了 VSCode 内置预览和 MPE,右侧出现两个预览标签页,系统可能把焦点/滚动事件发给错误的那个
数学公式和代码块高亮为什么预览里不显示?
这不是同步问题,而是渲染链路断裂。公式需要引擎启用 + 语法规范,代码块需要语言 ID 精确匹配。
必须确认:
- 公式启用:设置中开启
markdown.math.enabled(原生)或markdown.extension.math.enabled(部分旧版插件),且公式前后必须有空行,例如:$$E=mc^2$$上下各空一行 - 代码块语言 ID 必须小写、无空格、符合标准,比如写成
python而不是Python或Py;bash不能写成shell - 如果用了 MPE,确保没禁用
markdown-preview-enhanced.enableKaTeX或markdown-preview-enhanced.enableMathJax
同步滚动再稳,公式和代码块不渲染,预览就只是个花架子。这些配置项彼此独立,得一个个对齐,不能指望开了 sync 就自动连带解决所有渲染问题。


















