sublime text 原生不支持文件对比,90%“对比失败”源于装错插件、未保存文件或编码不一致;需正确安装package control和filediffs插件,确保文件已保存且路径完整,统一编码与换行符,并手动拆栏或改用compare side-by-side实现并排对比。

FileDiffs 装不上?先看 Package Control 活没活
按 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS),输入 Package Control: Install Package 回车——如果报 “command not found”,说明 Package Control 没装好或已损坏。
解决办法:
- 打开
View → Show Console(快捷键Ctrl+`) - 粘贴官网安装代码(对应系统),回车执行
- 重启 Sublime,再试一次
Package Control: Install Package - 等列表加载完,**严格输入
FileDiffs(末尾带 s,大小写敏感)**,别输成FileDiff或FileDifferences
右键没出现 Diff 选项?你可能根本没“真正打开”文件
FileDiffs 只处理有真实路径的已保存文件,对 untitled 标签页、未保存副本、同一文件的两个分屏标签完全无视。
必须满足:
- 两个标签页状态栏都显示完整路径(如
/project/src/config.json),不是Untitled-1 - 不能是同一个文件被分屏打开(比如左右都是
index.js) - 得先点击任一标签页让它成为活动视图,再右键——侧边栏右键无效
- 右键菜单里若只有灰色不可点的
Diff with saved,说明当前文件还没存盘,先按Ctrl+S
对比结果全是红块绿块、中文变方块?不是插件问题,是编码和换行符在打架
FileDiffs 不做任何编码转换或换行符归一化,它只比对 Sublime 当前加载进来的文本流。一个 UTF-8 with BOM,一个 GBK,一个 CRLF,一个 LF,就会导致整段误标差异。
统一操作(每个文件单独做):
- 右下角点击编码名(如
UTF-8)→Reopen with Encoding → UTF-8(去掉 BOM) - 右下角点击换行符标识(如
Windows (CRLF))→Convert Line Endings → Unix (LF) - 缩进敏感格式(YAML/Markdown)建议先
Convert Indent to Spaces对齐 - 开启
draw_white_space设置,肉眼识别行尾空格差异
想并排看?FileDiffs 默认不干这事,得手动拆栏+拖拽
FileDiffs 默认把差异输出到新标签页(纯文本 diff),不是左右并排窗口。要并排,必须自己动手:
- 先用
Ctrl+K, Ctrl+2(Windows/Linux)或Cmd+K, Cmd+2(macOS)把视图拆成左右两栏 - 分别在左右栏打开两个目标文件
- 在左栏右键 →
FileDiffs: Compare Current File with Other File - 生成的 diff 标签页会出现在左栏,把它拖进右栏即可并排
更省事的替代方案是直接装 Compare Side-by-Side:打开两个文件后按 Ctrl+Alt+C,自动并排+同步滚动+高亮差异,不用折腾视图布局。











