分屏对比时自动换行与同步滚动需分别配置且互不替代;editor.wordwrap 在 diff 视图中生效但仅作用于单侧,同步滚动默认开启却易静默断开,二者共存仍可能因换行导致视觉错位。

分屏对比代码时,自动换行和同步滚动是两个独立功能,必须分别配置,且不能互相替代——开自动换行不会让两侧对齐,开同步滚动也不会让长行折行。两者要同时生效,得各自满足触发条件。
Editor: Word Wrap 在对比视图中是否生效?
生效,但仅作用于当前编辑器面板本身,不跨视图联动。VSCode 的 editor.wordWrap 设置对 diff 视图(即 Compare Active File With 打开的窗口)完全有效,但要注意:
- 必须设为
"on"、"wordWrapColumn"或"bounded";"off"就不会换行 - 设置在用户级或工作区级都行,但不能只写在某个语言特定配置里(如
"[typescript]": { "editor.wordWrap": "on" }对 diff 视图无效) - diff 视图里左右两栏各自应用自己的
wordWrap设置,比如左侧用"on"、右侧用"wordWrapColumn"也完全允许 - 如果某侧是只读状态(如 Git 差异视图中的 base 文件),自动换行仍正常工作,不影响高亮或折叠
同步滚动在 Compare 视图中默认开启,但极易静默退出
VSCode 的 diff 视图(Compare Active File With)默认启用同步滚动,但这个“启用”非常脆弱:
- 只要用鼠标滚轮、方向键或拖动滚动条单独滚动任一侧,同步立即断开,且右上角同步按钮图标不变、无提示
- 右上角那个双箭头按钮(
Sync Scrolling)只是单次对齐当前位置,不是开关——点一下就对齐,之后再滚又失效 - 想临时绕过同步?按住
Alt(Windows/Linux)或Option(macOS)再滚动任意一侧,松手即恢复同步 - 想永久禁用?右键 diff 视图的编辑器标签 → 取消勾选
Sync Scrolling(仅该标签页生效)
为什么开了 wordWrap + 同步滚动,还是看起来“不对齐”?
这不是 bug,而是 VSCode 的设计逻辑:同步滚动按可视区域比例对齐,不是逐行硬匹配。当两侧文件行数差异大(比如一边有大量注释、空行、或格式化不同),换行后实际显示的逻辑行数会不同,导致视觉错位:
- 左侧第 100 行可能因自动换行被撑成 3 屏,右侧同样位置只占 1 屏,VSCode 按“滚动像素比例”对齐,而非“源码行号”
- 若需严格行号对齐(如审阅 PR 时逐行核对),建议关闭
editor.wordWrap,改用横向滚动 + 小地图辅助定位 - 忽略空白行差异可缓解错位:
diffEditor.ignoreTrimWhitespace设为true(默认已开启),但diffEditor.renderSideBySide为false(并排模式)时效果更稳定 - 大文件(>5MB)或启用太多语法插件时,换行渲染延迟 + 同步微滞后,属正常现象,不必强行调优
Markdown 预览分屏不支持同步滚动,别白费劲
如果你试图用 Ctrl+K V 开 Markdown 预览并分屏对比,那从根源上就走不通——VSCode 原生预览和编辑器之间完全不共享滚动事件,也没有 Sync Scrolling 选项。唯一可行路径是:
- 卸载所有 Markdown 预览类插件(尤其是 Markdown All in One)
- 安装
Markdown Preview Enhanced,重启 VSCode - 用命令面板执行
Markdown Preview Enhanced: Open Preview to the Side,而非拖拽或快捷键 - 确保右下角状态栏显示
[MPE],否则不是它在接管预览
其他所谓“同步滚动”方案,要么是监听 DOM 的 hack 实现(VSCode 更新后大概率失效),要么把预览塞进终端/WebView 等非标准区域,不可靠。











