sublime text 原生无文件级 diff 功能,依赖插件(如 filediffs、diffy)调用系统工具或封装比对逻辑;失败主因是插件未生效、文件未保存、编码/换行符不一致,需统一 utf-8 编码与 lf 换行符,并手动分栏对比。

Sublime Text 原生不提供文件级 Diff 功能,所有可用的对比能力都依赖插件调用系统工具或封装文本比对逻辑——装错插件、没保存文件、编码不一致,三者任一出问题,Diff 命令就静默失败或满屏误标。
为什么右键没出现 FileDiffs 或 Diffy 选项
这不是 Sublime 的 bug,而是插件根本没生效或文件状态不满足前提。常见卡点:
-
Package Control损坏:按Ctrl+Shift+P输入Package Control: Install Package报错,需重装(控制台粘贴官网 Python 代码) - 插件名输错:
FileDiffs末尾带s,大小写敏感;Diffy不是diffy或DiffY - 文件未保存:两个标签页右下角必须显示完整路径(如
/src/main.py),不能是Untitled-1 - 右键位置错误:必须先点击标签页激活它,再右键——侧边栏右键、文件图标上右键均无效
对比结果全是红块绿块?先统一编码和换行符
FileDiffs 和 Diffy 都不做编码转换,直接比对内存中的字节流。中文乱码、整段标红、空行偏移,90% 是这个原因:
- 逐个打开待比文件 → 右下角点击当前编码(如
UTF-8 with BOM)→Reopen with Encoding→ 选UTF-8 - 右下角点击换行符标识(如
Windows (CRLF))→Convert Line Endings→Unix (LF) - 缩进敏感格式(YAML/Markdown)建议再执行
Convert Indent to Spaces统一对齐 - 若仍乱码,可在
Preferences → Package Settings → FileDiffs → Settings中加配置:"diff_tool": "git"(需系统已装 Git)
想并排看差异?得手动拆栏,插件默认不干这事
FileDiffs 默认输出纯文本 diff 到新标签页;Diffy 默认左右分栏但不同步滚动;Compare Side-by-Side 虽支持同步,但会把空格/缩进差异全算“不同”。要真正并排对照:
- 先用
Ctrl+K, Ctrl+2(Win/Linux)或Cmd+K, Cmd+2(macOS)将窗口拆为两栏 - 把两个待比文件分别拖入左、右面板
- 右键任一标签页 → 选
FileDiffs: Compare with Other View(FileDiffs)或Diffy: Compare with Active View(Diffy) - 注意:
Diffy的对比结果页不联动滚动,这是设计如此,不是失效
最易被忽略的点:所有插件都不处理未保存缓冲区,也不理解 Git 状态——你看到的只是两份纯文本快照的行级差异,不是语义级变更。如果文件含 BOM、混合 CRLF/LF、或一个用 GBK 一个用 UTF-8,哪怕只改了一个字母,也可能整段标红。











