能,但需手动安装;作者已归档不再维护,github 下载解压后重命名放入 packages 目录;仅支持已保存文件或与剪贴板对比,不支持两个未保存 buffer;中文乱码需在配置中设 "encoding": "utf-8"。

FileDiffs 插件在 Sublime Text 4 上还能用吗
能,但默认通道已失效,必须手动安装;Sublime Text 3 和 4 都支持,但官方 Package Control 里搜不到 FileDiffs 了——它被作者归档,不再维护,不过源码仍可用。
常见错误现象:Package Control: Install Package 搜索不到结果;或者装完后右键没出现 Diff with Clipboard 等菜单项。
- 去 GitHub 手动下载最新 release(如
v2.1.0),解压后把整个文件夹重命名为FileDiffs - 放入 Sublime 的
Packages目录(Preferences → Browse Packages…打开的路径) - 重启 Sublime,确认菜单栏
Tools → FileDiffs出现
对比两个未保存的临时文件会出什么问题
会失败,且无提示。FileDiffs 只比较「已保存的磁盘文件」或「当前文件 vs 剪贴板内容」,不支持两个 unsaved buffer 之间直接 diff。
使用场景:你刚改了 config.json,想和上一版 git commit 对比,但还没保存;这时得先 Ctrl+S 保存,再右键选 Diff with Version Control(需额外配 Git);否则只能复制旧内容到剪贴板,再用 Diff with Clipboard。
-
Diff with Clipboard是唯一支持“未保存内容”的路径,但另一方必须是剪贴板文本 - 两个 tab 都未保存?只能先保存其中一个,再复制另一个的内容过去
- Sublime 自带的
View → Differences功能不依赖插件,但仅限已保存文件间比较
为什么 Diff 结果里中文显示为乱码或空行
因为 FileDiffs 默认用系统 locale 解码文件,Windows 上常误判为 cp1252 而不是 UTF-8 或 GBK。
参数差异:插件本身不提供编码选择界面,但可通过修改其配置生效。找到 Packages/FileDiffs/FileDiffs.sublime-settings,添加:
{
"encoding": "UTF-8"
}
如果文件是 GBK 编码(如老项目 .txt),则写 "encoding": "GB2312"。注意大小写敏感,utf8 或 utf-8 都不行,必须是 UTF-8。
- 该设置只影响 FileDiffs 的读取行为,不影响 Sublime 自身的文件打开编码
- 若对比大文件(>10MB),可能卡顿甚至崩溃——这是插件底层用 Python subprocess 调
diff命令导致的,无优化余地
Mac / Linux 下找不到系统 diff 命令怎么办
会报错:Unable to find 'diff' command。FileDiffs 依赖系统原生命令行工具,不是纯 Python 实现。
性能影响:它调的是本地 diff -u,速度比 JS/Python 写的纯文本 diff 快得多,所以别试图替换成其他库。
- macOS:运行
xcode-select --install安装命令行工具(含diff) - Linux(Ubuntu/Debian):
sudo apt install diffutils - Linux(CentOS/RHEL):
sudo yum install diffutils或dnf install diffutils - 确认是否可用:
which diff应输出类似/usr/bin/diff
路径和权限都对,但还是报错?检查 Sublime 是否从终端启动(subl),GUI 方式启动时可能不继承 shell 的 $PATH —— 这点容易被忽略。










