Sublime Text 原生不支持 diff,需装 Diffy 插件;按 ctrl+shift+d(Win/Linux)或 cmd+shift+d(macOS)对比已打开文件,须先聚焦标签页;忽略空格默认开启,误标整行差异,需改配置禁用。

Sublime Text 自带 diff 功能能用吗?
不能直接用。Sublime Text 原生不提供文件对比(diff)视图,点开两个文件就是两个独立标签页,没有并排高亮差异、跳转变更块、合并修改这些能力——你得靠插件补上这一环。
最常用、维护活跃、行为接近 VS Code 或 Beyond Compare 的是 Diffy,不是 SublimeDiff(已停更)或 FileDiffs(功能简陋,不支持双向同步滚动)。装错插件,后面所有操作都卡在“看不出哪行变了”这一步。
-
Diffy支持左右并排、行内差异高亮、点击跳转、右键快速应用某处差异 - 它不依赖外部命令(比如系统
diff),Windows/macOS/Linux 开箱即用 - 安装后快捷键是
ctrl+shift+d(Win/Linux)或cmd+shift+d(macOS),不是菜单里找
怎么让 Diffy 对比两个已打开的标签页?
必须先激活(focus)其中一个要对比的标签页,再按快捷键;如果当前焦点在侧边栏、控制台或未保存的临时文件上,Diffy 会静默失败,不报错也不弹窗——这是新手最常卡住的地方。
正确流程只有两步:
- 点击左边要当“基准”的文件标签,让它成为当前活动视图
- 按
ctrl+shift+d,然后用鼠标点选右边要对比的另一个已打开标签页
注意:不能靠 Ctrl+Tab 切换后直接按快捷键——焦点没落在编辑区,Diffy 就收不到上下文。如果点了没反应,先按一下 esc 确保没在命令面板里,再点一次文件标签。
对比结果里为什么有些行标红但内容没变?
这是 Diffy 默认开启「忽略空格差异」导致的误判。它把末尾空格、制表符转空格、换行符类型(\r\n vs \n)都算作“无意义变更”,于是把整行标为改动,但实际文本一样。
想关掉这个行为,得手动改配置:
- 菜单 →
Preferences→Package Settings→Diffy→Settings – User - 在里面加一行:
"ignore_whitespace": false - 保存后重启 Sublime(不重启不生效)
另外,如果两个文件编码不同(比如一个 UTF-8 with BOM,一个纯 UTF-8),Diffy 会把 BOM 当作开头三个字符差异,全文件偏移——这时先统一用 File → Reopen with Encoding 调成一样再对比。
Diffy 能对比硬盘上两个未打开的文件吗?
能,但路径必须手动输入,不支持拖拽或文件选择框。快捷键还是 ctrl+shift+d,但触发后光标会跳到命令面板底部,显示 Enter path to file... 提示。
这时候输绝对路径最稳:
- Windows 示例:
C:\project\config.json(注意用正斜杠或双反斜杠,单反斜杠会报错) - macOS/Linux 示例:
/Users/me/app/src/index.js - 相对路径容易出错,比如
./a.txt会从 Sublime 启动目录算,不是当前项目根目录
输错路径时,Diffy 不提示“文件不存在”,而是直接返回空白对比窗口——你得自己检查路径拼写、权限和是否真有这个文件。
Diffy 的逻辑很直白:它只做差异计算和渲染,不改文件、不存记录、不缓存历史。每次关掉对比窗口,就彻底清空。想留痕,得自己截图或复制差异块到新文件——这点容易被当成“功能缺失”,其实是设计使然。

















