sublime text 文件对比需装正确插件并满足前提条件:插件名必须为“compare side-by-side”,且两个不同路径的文件须以独立标签页打开并至少激活一个;编码、换行符、缩进需统一,禁用 word wrap,大文件建议切 plain text 语法或改用 diffy。

Sublime Text 原生不支持文件对比,装错插件、没打开文件、编码不一致——这三件事占了 90% 的“点不动”“全红”“没反应”问题。直接上能用的方案,别绕。
Compare Side-By-Side 插件怎么装才不白忙
它不是搜“compare”就点安装,名字必须严丝合缝:Compare Side-By-Side(带空格 + 连字符,末尾无 s)。搜 CompareSideBySide、Compare Side By Side 或漏掉连字符,都会装到废弃分支或旧版,右键菜单压根不出现。
- 先确认
Package Control活着:按Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输Package Control: Install Package回车——如果报错或没反应,说明它坏了,得重装 - 装插件时等列表完全加载完再输名字,手快输一半就匹配容易选错
- 装完不用重启,但右键菜单只出现在「已打开的文件标签页」上,不是侧边栏、不是编辑区空白处、更不是未保存的
Untitled-1
为什么右键点了 Compare Side by Side 却没反应
它只认两个前提:两个文件都已作为独立标签页打开,且至少有一个被显式激活过(点一下标签页即可)。常见卡点:
- 两个标签页是同一文件的分屏副本(比如拖拽一个
index.js标签到右边),它拒绝对比——必须是不同路径的文件 - 文件状态栏显示的是
untitled或Untitled-1,哪怕你刚 Ctrl+S 过,也得再点一次保存确认路径落地 - 快捷键
Ctrl+Alt+C(Win/Linux)或Cmd+Alt+C(macOS)失效?检查是否被其他插件劫持:在命令面板搜Compare,看有没有Compare: Compare Files可手动执行
对比结果全是红/黄/绿块?先看编码和换行符
Compare Side-By-Side 不做任何格式转换,它比的是 Sublime 当前加载进内存的原始字节流。所以:
- 一边是
UTF-8 with BOM,另一边是纯UTF-8→ 第一行整行标红,误判为内容不同;解决:右下角点编码名 →Reopen with Encoding → UTF-8,再保存 - 缩进混用
Tab和4 spaces→ 每行都被当差异;解决:对比前按Ctrl+Shift+P→ 输入Convert Indentation to Spaces - 换行符不统一(
\r\nvs\n)→ 空行位置错位、注释偏移;解决:右下角点换行符标识 → 统一选Unix (LF) - 开了
Word Wrap→ 物理行号乱套,同步滚动失效;对比时务必关掉:View → Word Wrap取消勾选
大文件卡死、JSON/base64 块标满黄底?别硬扛
它对性能没做特别优化,单行超 200 字符或总行数过 5000,UI 就可能冻结几秒。这时候别调参数,直接切策略:
- 提前按
Ctrl+Shift+P→Set Syntax: Plain Text,禁用语法高亮能明显提速 - 如果是压缩 JSON、minified JS 或 base64 块,优先用
Diffy:右键 →Diffy: Compare with Active View,它用逐行文本比对,不试图解析结构,更稳 - 真要查某个函数或常量是否一致,别开对比插件——用
Ctrl+Shift+F(Win/Linux)或Cmd+Shift+F(macOS),Where栏填两个绝对路径(逗号分隔),Find输入关键字,结果分组一目了然
最常被忽略的其实是“未保存 buffer”这个前提——它不读磁盘,不拉 Git,只看你当前标签页里开着什么。想对比“刚改一半的文件 vs 上一版”,就得先把上一版用 Git: Show at Commit 或 GitGutter 拉出来再打开为新标签页,否则一切操作都是空中楼阁。











