Sublime Text原生diff功能简陋,仅支持已打开标签页的文本输出;FileDiffs适合单文件行级对比,Compare Folders侧重目录结构比对;二者均不支持Git暂存区,大文件或三路合并应配置外部工具。

Sublime Text 内置的 diff 命令只能对比当前打开的两个标签页,且不支持并排高亮
Sublime Text 原生没有图形化双文件对比面板,diff 命令(通过 Ctrl+Shift+P 输入 Diff)仅在控制台输出文本差异(类似 Unix diff -u),不带颜色、不可点击跳转。它要求两个文件都已打开为独立标签页,且当前焦点必须在其中一个上——否则命令不可用。这个功能基本只适合快速验证“是否有改动”,不适合代码审查或合并决策。
推荐插件:Compare Folders 和 FileDiffs 的实际区别
FileDiffs 更轻量,专注单文件对比:右键选中两个已打开的文件 → FileDiffs: Compare,会弹出新标签页,显示带语法高亮的行级差异(绿色/红色背景 + 左右箭头图标),支持快捷键 Ctrl+Alt+D。但它不能对比未打开的文件,也不能处理目录。
Compare Folders 侧重结构比对:可直接对比两个本地路径(如 /src/v1 和 /src/v2),列出所有新增/删除/修改的文件,并对选中的文件自动调用内置 diff 或关联外部工具(如 meld、vscode)。配置项 diff_command 需手动填绝对路径,例如:
"diff_command": "/usr/bin/meld"。Windows 用户注意路径分隔符要用正斜杠或双反斜杠。
-
FileDiffs启动快,适合日常改一行代码后立刻验效果 -
Compare Folders配合diff_command才真正可用,否则只显示文件列表,不显示内容差异 - 两者都不支持 Git 暂存区对比(即不能像 VS Code 那样直接比工作区和 index)
如何让 FileDiffs 支持未打开文件的右键对比?
默认不支持。需配合 Sublime 的侧边栏增强插件(如 SideBarEnhancements)实现:安装后,在侧边栏右键任意两个文件 → Diff with each other,即可触发 FileDiffs 的对比逻辑。但前提是这两个文件路径不能含中文或空格(某些版本会因 shell 解析失败而静默退出)。临时解决办法是把项目移到纯英文路径下,比如 C:/dev/project。
另一个限制是:如果两个文件编码不同(如一个 UTF-8 with BOM,一个 UTF-8 without BOM),FileDiffs 会直接报错 UnicodeDecodeError,且不提示原因。此时需先用 Sublime 手动另存为统一编码(菜单 → File → Save with Encoding → UTF-8)。
为什么不用外部 diff 工具?什么时候该切过去
当需要三路合并(merge)、查看 Git blame、或对比超大文件(>10MB)时,内置方案和插件都会卡死或丢内容。这时应配置外部工具:
-
macOS 推荐
opendiff(Xcode 自带)或meld(brew install meld) - Windows 可用
WinMerge或 VS Code 的code --diff命令(需把code加入 PATH) - Linux 下
meld或diffuse最稳
配置入口统一在:Preferences → Package Settings → FileDiffs → Settings – User,填入对应命令。别漏掉引号和空格,例如:
"diff_tool": ["code", "--diff"]。少一个引号,Sublime 就会忽略整条配置。
真正麻烦的是路径中带空格的 Windows 用户——FileDiffs 传参时不会自动加引号,导致 C:\Program Files\WinMerge\WinMergeU.exe 被截断成 C:\Program,直接报错。绕过方式:用短路径名(dir /x 查看)或改用 PowerShell 封装脚本。










