filediffs 插件正常运行需满足三个硬性前提:文件必须已保存、路径必须不同、编码和换行符必须统一;否则会出现“没反应”“乱码”“标红整行”等问题。

FileDiffs 插件装得上,不等于能比——90% 的“没反应”“乱码”“标红整行”,都卡在三个硬性前提没满足:文件必须已保存、路径必须不同、编码和换行符必须统一。
Package Control 没跑起来,FileDiffs 就根本装不上
Sublime Text 原生不带插件管理,Package Control 是唯一正经安装渠道。如果按 Ctrl+Shift+P 输入 Package Control: Install Package 后报 command not found,说明它压根没装好。
- 打开控制台(
Ctrl+`或Cmd+`),粘贴官网安装代码(来自packagecontrol.io/installation),回车执行 - 必须重启 Sublime Text,再试一次命令面板搜索
- 等列表加载完,**严格输入
FileDiffs(末尾带 s,大小写敏感)**,别输成FileDiff、filediffs或FileDifferences - 手动下载 ZIP 放进
Packages/目录?路径含中文、放错层级、权限不对,都会导致插件静默失效
右键菜单没出现 FileDiffs 选项?你可能根本没“真正打开”文件
FileDiffs 只认有真实磁盘路径的已保存文件,对 Untitled-1、未保存副本、同一文件分屏打开完全无视。
- 两个标签页右下角都必须显示完整路径(如
/project/src/config.json),不能是Untitled - 不能是同一个文件被左右分屏打开(比如左右都是
index.js) - 侧边栏右键无效——必须先点击任一已打开的标签页,让它成为活动视图,再右键
- 右键菜单里只有灰色不可点的
Diff with saved?说明当前文件还没存盘,先按Ctrl+S
对比结果全是红块绿块、中文变方块?不是插件 bug,是编码和换行符在打架
FileDiffs 不做任何编码转换或换行符归一化,它比的是 Sublime 当前加载进内存的原始字节流。一个 UTF-8 with BOM,一个 GBK,一个 CRLF,一个 LF,就会导致整段误标差异。
- 逐个打开待比文件 → 右下角点击编码名(如
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 并加入 PATH)
默认不并排显示,想左右对照得手动拆栏+拖拽
FileDiffs 默认把差异输出到新标签页(纯文本 diff 格式),不是左右分栏视图。要并排看,必须手动干预布局。
- 先用
Ctrl+K, Ctrl+2(Windows/Linux)或Cmd+K, Cmd+2(macOS)把窗口拆成左右两栏 - 分别在左右栏打开两个目标文件
- 在左栏右键 →
FileDiffs: Compare Current File with Other File - 生成的 diff 标签页会出现在当前栏,拖到右栏即可并排观察
- 快捷键可配:
{"keys": ["ctrl+shift+d"], "command": "file_diff_menu"}加到用户键绑定里
最常被忽略的一点:它不自动处理编码、换行符、缩进——这些全得你手动对齐。看起来只是点一下右键的事,背后全是状态校验。没看到菜单,别急着重装插件;看到乱码,别怀疑插件坏了;先低头看看右下角的编码和换行符标识。











