Sublime Text 原生不支持文件对比,必须安装插件(如 SublimeDiff、Diffy 或 Compare Side-By-Side);所有功能均要求两个文件已保存、编码与换行符统一,且操作路径正确,否则无法触发对比。

Sublime Text 原生不支持文件对比(Diff),所有高亮、并排、右键菜单里的“Compare Files”“Diff with…”等功能,全靠插件驱动。没装对插件,或者装了但没按正确路径触发,就永远看不到差异。
为什么右键没出现 Diff 选项
最常见原因是:两个文件都没保存,或只有一个已打开。SublimeDiff、Diffy、Compare Side-By-Side 这三类主流插件,全部拒绝处理 untitled 缓冲区(即未保存的新建文件)。即使你右键标签页,菜单里也不会显示任何 Diff 相关项。
- 确保两个文件都已保存到磁盘,右下角状态栏显示真实路径(如
UTF-8+LF) - SideBarEnhancements 的
Diff with File…只在侧边栏右键有效;Diffy 的Compare with Active Tab必须在标签页上右键,且当前激活的标签页是“基准文件” - 如果装的是 Compare Side-By-Side,它只响应“已打开的两个标签页”,不支持从侧边栏选文件直接比
Ctrl+Shift+D 没反应?检查插件和焦点
Ctrl+Shift+D(Windows/Linux)或 Cmd+Shift+D(macOS)是 SublimeDiff 默认快捷键,但前提是:当前焦点必须落在某个已打开的文件标签页内——不能在命令面板、控制台、侧边栏或空编辑区。
- 先用鼠标点一下任一打开的文件内容区(哪怕只是点个空白行),再按快捷键
- 如果仍无效,在命令面板(
Ctrl+Shift+P)中输入Diff: Compare with Clipboard,看是否能调出该命令;若没有,说明插件根本没装成功,或安装的是停更的旧版Diff(末尾无y) - Diffy 不绑定此快捷键,默认用
Ctrl+Alt+D,别和 SublimeDiff 混用
对比结果乱码、空行错位、整行标红
这不是插件坏了,而是编码或换行符不一致导致解析失败。SublimeDiff 和 Diffy 都不做自动转码,也不统一换行格式,它们直接按字节流比对。
- 右下角点击编码名(如
UTF-8),统一设为UTF-8;若含中文且仍乱码,尝试UTF-8 with BOM或GBK(需手动File → Reopen with Encoding) - 右下角点击换行符标识(
Unix (LF)/Windows (CRLF)),统一选Convert to Unix,尤其当一个文件来自 Git Bash、另一个来自 Notepad++ 时 - 行尾空格不同也会被标为差异——开启
draw_white_space设置(在Preferences → Settings中加"draw_white_space": "all"),肉眼确认是否真有空格污染
大文件卡死、对比窗口空白、没报错也没输出
Diffy 和 SublimeDiff 都是纯 Python 实现,没调系统 diff 命令,所以 >5MB 的日志或导出数据很容易卡住甚至崩溃。它不会弹错误框,只会静默失败或新开一个空标签页。
- 先用系统命令验证:终端执行
diff -u file1.txt file2.txt | head -20,看是否能快速出结果;若也卡,说明文件本身不适合逐行 diff - 别指望插件处理压缩包、二进制或 base64 编码内容——它们会当成乱码文本比,结果毫无意义
- 真要查大文件差异,直接用终端:
git diff --no-index --word-diff=color file1.json file2.json,然后把输出粘进 Sublime 查看
真正容易被忽略的点是:所有插件都不处理“未保存缓冲区”和“编码自动探测”。你以为点右键就能比,其实它连文件都没读——先存盘、再统码、最后触发,三步缺一不可。跳过任意一步,得到的都不是差异,是幻觉。

















