能,filediffs支持未保存更改与对应磁盘文件对比,但仅限同一文件的已修改缓冲区与原路径已存版本之间;要求标签页由磁盘文件打开、右下角显示完整路径、且已触发修改状态,否则“diff with saved”为灰色不可用。

FileDiffs 能不能比未保存的文件和磁盘文件?
能,但仅限“当前编辑中、尚未保存的文件”与“它原本对应的磁盘文件”之间——也就是常说的“未保存更改 vs 已保存版本”。这不是任意两个未保存缓冲区之间的对比,FileDiffs 不支持 untitled 标签页之间互比,也不支持把一个未保存文件和另一个完全无关的已存文件强行拉来对比。
右键菜单里只有 “Diff with saved” 是灰色的?
这是最常卡住的地方:灰色 = 当前文件还没真正关联到磁盘路径。触发条件有三个,缺一不可:
- 该标签页必须是通过打开磁盘文件(比如从侧边栏双击
src/index.js)加载进来的,不是Ctrl+N新建再粘贴内容的 untitled 缓冲区 - 文件虽未保存,但 Sublime 已记住它的原始路径——状态栏右下角应显示完整路径(如
/project/src/index.js),而不是untitled或空 - 你还没对它做过任何修改(即未触发“已修改”状态),此时
Diff with saved会灰掉;一旦你增删一行、哪怕只加个空格,它立刻变亮可点
对比结果全是乱码或整行标红?
不是插件坏了,而是 Sublime 加载时编码/换行符不一致。未保存缓冲区沿用的是你当前视图的编码设置,而磁盘文件可能以不同方式保存过:
- 先确认磁盘原文件编码:右键侧边栏文件 →
Reopen with Encoding→ 选UTF-8(避免UTF-8 with BOM) - 再检查当前未保存缓冲区的编码:右下角点击编码名 →
Reopen with Encoding→ 同样选UTF-8 - 换行符也要统一:右下角点
Line Endings→Convert Line Endings→Unix (LF) - 如果仍异常,可在
Preferences → Package Settings → FileDiffs → Settings中加配置:"diff_tool": "git"(前提是系统 PATH 里有git)
想看并排差异,但默认只出单页 diff 输出?
没错。FileDiffs 默认输出是类似 git diff 的文本流,不是左右分栏视图。要并排观察,得手动布局:
- 先按
Ctrl+K, Ctrl+2(Windows/Linux)或Cmd+K, Cmd+2(macOS)把窗口拆成两栏 - 左栏保持当前未保存的文件(带修改状态)
- 右栏用
Ctrl+P快速打开同一路径的磁盘文件(确保路径一致、已保存) - 在左栏右键 →
FileDiffs: Compare Current File with Other File→ 点右栏那个已保存文件
这时候生成的对比结果仍为单页,但你可以把该结果标签拖进右栏,手动实现左右对照——真正的并排高亮需靠 Compare Side-By-Side 这类插件,FileDiffs 本身不提供实时块级高亮渲染。











