Sublime Text 原生不支持文件对比,需依赖插件或外部工具:Diffy轻量稳定、适合已打开文件快速比对;FileDiffs兼容性好、适合团队协作但要求文件已保存;ExternalDiff调用图形化工具支持三路合并与大文件。

Sublime Text 原生不支持文件对比,所有“对比”功能都依赖插件或外部工具——这不是你没找对菜单,是它真没做。选错插件会浪费半小时装配置,还比不出正确结果。
Diffy:最轻量、最稳的已打开文件比对
适合日常快速验证修改前后、分支间小范围差异,不依赖 Python,直接调系统 diff(macOS/Linux)或 fc.exe(Windows),ST4 兼容性好。
- 必须两个文件都以独立标签页打开(不能是分屏共存于一个 tab)
- 右键任一 tab →
Diffy: Compare with Active Tab(注意不是旧版 “Compare with Tab”) - 结果新开只读标签页:左为当前激活页,右为目标页,带 +/- 行标记和颜色高亮
- 不联动滚动、不忽略空格、不处理未保存缓冲区(
untitled标签页右键无选项) - 路径对比需手动输入绝对路径,Windows 含空格时必须用英文双引号包裹,如
"C:\My Project\config.json"
FileDiffs:右键即用、兼容 ST3/ST4 的首选插件
目前维护最活跃、行为最可预期的插件,要求严格但报错明确,适合对一致性有要求的团队协作场景。
- 安装时必须严格输入
FileDiffs(末尾s不可少,大小写敏感) - 只支持已保存文件:状态栏显示完整路径(如
/project/src/main.py),untitled或未保存状态右键无响应 - 右键任一已打开文件 →
FileDiffs: Compare with Current→ 再点另一个文件名 - 差异结果含行号、语法高亮、+/- 标记;但若两文件编码不同(如 UTF-8 BOM vs UTF-8),会误标大量空行或中文乱码
- 不支持大文件(>10MB),纯 Python 实现,卡顿无提示
ExternalDiff:调用 meld / WinMerge / Beyond Compare 的可靠方案
当你需要三路合并、二进制支持、图形化并排视图,或经常比对日志、配置、压缩 JSON 时,这是唯一靠谱路径。
- 先确保系统已装好工具:macOS 装
meld(brew install meld),Windows 推荐WinMerge(默认加 PATH),macOS 可用Kaleidoscope - 在
Preferences → Package Settings → ExternalDiff → Settings中配置"diff_command",例如:"diff_command": ["meld", "${file1}", "${file2}"] - 变量
${file1}和${file2}由插件自动替换为当前两个文件的绝对路径 - 必须先激活两个文件(点击标签页使其成为焦点),再右键或调命令面板运行
ExternalDiff: Diff Files - 侧边栏右键无效——Sublime 的上下文菜单只响应“当前活动视图”,不是鼠标悬停位置
真正容易被忽略的点是编码和保存状态:90% 的“整行标红”“错行”“无对比结果”,都不是插件坏了,而是其中一个文件是 untitled,或一个用 GBK 打开、另一个用 UTF-8 加载。比对前先确认状态栏路径存在、且执行过 File → Reopen with Encoding → UTF-8,能省下最多调试时间。

















