Sublime Text需装Diffy插件实现文件对比,它调用系统diff/fc命令、免配置、兼容性强;安装后右键标签页或侧边栏即可两两对比,结果页显示标准diff格式,但不支持三路对比、编辑或跳转。

Sublime Text 本身不内置文件对比功能,必须依赖插件;最稳定、兼容性最好、无需额外配置的方案是安装 Diffy 插件 —— 它直接调用系统 diff(macOS/Linux)或 fc.exe(Windows),不依赖 Python 环境,也不会因 Sublime 升级失效。
如何安装 Diffy 插件
打开命令面板(Ctrl+Shift+P 或 Cmd+Shift+P),输入 Package Control: Install Package 回车,再搜索 Diffy 并安装。安装完成后无需重启,右键菜单立即生效。
- 别装
Sublime-Compare-Folders或Compare Side-By-Side:前者只支持目录,后者已多年未更新,Sublime 4 下常报AttributeError: 'NoneType' object has no attribute 'view' - 如果 Package Control 没反应,先检查是否已安装 —— 在
Preferences → Package Settings中找不到Package Control条目即未安装 - Windows 用户若提示
fc: command not found,说明系统环境变量异常,可临时在Preferences → Package Settings → Diffy → Settings中添加:{ "diff_command": ["cmd", "/c", "fc"] }
怎么快速对比两个已打开的标签页
确保两个待比对文件都已在 Sublime 中打开为独立标签页(非分割视图),然后右键任一标签页标题 → 选择 Diffy: Compare with Active View(注意不是“Compare with Tab”)。
- 必须是两个「独立标签页」:如果一个文件被拖进另一个标签页形成左右分屏,Diffy 无法识别为两个可比文件
- 操作后会新开一个只读的 diff 结果标签页,左侧为当前激活页内容,右侧为另一页内容,差异行高亮且带 +/- 标记
- 不支持三路对比(如 Git merge conflict 场景),仅限两两对比
如何对比磁盘上两个不同路径的文件
关闭所有文件 → 右键侧边栏中第一个文件 → Diffy: Compare File with... → 在弹出的文件选择对话框中定位并选中第二个文件。
- 该方式绕过编辑器缓存,直接读取磁盘原始内容,适合验证保存是否生效、排查编码差异
- 若选中的文件路径含中文或空格,Diffy 默认能正确处理;但若出现乱码,需检查文件实际编码(如 GBK 文件被误读为 UTF-8),此时应先用
File → Reopen with Encoding手动指定编码再对比 - 不支持通配符或批量对比多个文件对,每次只能比一对
Diffy 输出结果怎么看 & 常见干扰项
diff 结果页顶部显示类似 Files /path/a.py and /path/b.py differ,下方按行展示差异,格式与终端 diff -u 一致:以 - 开头为左文件独有,+ 开头为右文件独有, (空格)开头为相同行。
- 空行、缩进空格、末尾换行符(
\nvs\r\n)都会被标记为差异,这不是 bug —— Diffy 默认做逐字节比较;如需忽略空白,需手动改配置:{ "diff_args": ["-w", "-B"] }(-w忽略所有空白,-B忽略空行变化) - 对比大文件(>10MB)时可能卡顿甚至无响应,这是系统
diff命令的限制,无解;建议先导出为小片段再比 - 结果页无法编辑、不能保存,也不能跳转到原文件对应行 —— 它只是快照,要修改得切回原标签页
真正容易被忽略的是:Diffy 的对比逻辑完全依赖系统命令,它不会帮你处理编码转换、BOM 头、行尾符统一这些事。如果你发现两个“看起来一样”的文件总被标红,第一反应不该是换插件,而是先用 file 命令或 VS Code 的编码指示器确认它们是否真的一致。










