subl --diff 命令必须使用绝对路径,相对路径会导致静默打开空比较窗口;macos需通过命令面板安装shell commands;windows/linux也支持但需正确配置cli;中文路径乱码需避免强制utf-8编码。

subl --diff 命令必须带两个完整路径
Sublime Text 的命令行比较功能依赖 subl --diff,但它不会自动补全或识别相对路径中的模糊匹配。如果你执行 subl --diff file1.txt file2.txt 而当前目录不在文件所在位置,Sublime 会静默打开空的比较窗口,不报错也不提示——这是最常被卡住的地方。
实操建议:
- 始终使用绝对路径,例如:
subl --diff /Users/me/project/a.js /Users/me/project/b.js - 若在终端当前目录下操作,可用
$(pwd)/file1.txt避免手敲长路径(bash/zsh 支持) - Windows 用户注意:路径分隔符必须是正斜杠
/或双反斜杠\,单反斜杠会被 shell 解析为转义符,导致路径截断
macOS 下 subl 命令未找到?检查是否启用了 CLI 工具
Sublime Text 安装后默认不注册 subl 命令,即使你已安装软件,终端仍会报 command not found: subl。这不是 PATH 问题,而是 CLI 工具根本没启用。
解决方法(仅 macOS):
- 打开 Sublime Text,按
Cmd+Shift+P调出命令面板 - 输入
Install Package Control(如果还没装)→ 回车 - 再输入
Shell Commands: Install Login Shell Command→ 回车 - 关闭并重开终端,
subl --help应能正常响应
注意:该命令只写入 ~/.zprofile(zsh)或 ~/.bash_profile(bash),切换 shell 后可能失效。
Windows 和 Linux 用户不能用 --diff?其实是可以的,但有前提
官方文档没明确说,但 Windows/Linux 版本也支持 --diff,前提是 Sublime Text 已设为默认关联程序且 CLI 工具已正确注册。常见失败原因是:
- Windows:安装时没勾选 “Add to PATH” 选项(Sublime Text 4 安装向导里有)
- Linux:手动下载 tarball 解压的用户,需自己把
subl脚本软链到/usr/local/bin/,且脚本中SUBLIME_HOME路径要指向实际安装目录 - 所有平台:如果 Sublime 正在运行但工作区已崩溃(比如上次异常退出),
--diff可能无响应——先killall sublime_text(macOS/Linux)或任务管理器结束进程再试
比较时中文路径乱码或文件打不开?关掉「以 UTF-8 保存」强制选项
Sublime 默认用系统编码读取文件,但如果你在设置里开启了 "default_encoding": "UTF-8" 或勾选了「以 UTF-8 保存」,它会强行用 UTF-8 解码非 UTF-8 文件(比如 GBK 编码的中文路径或内容),结果就是文件名显示为 ,或直接报 Unable to decode bytes as UTF-8。
临时绕过方式:
- 启动时加
--encoding=GBK(仅部分版本支持,不通用) - 更可靠的做法:先把文件用其他编辑器另存为 UTF-8 编码,再比较
- 长期方案:在 Sublime 设置中移除硬编码的
default_encoding,让其自动检测编码
这个细节容易被忽略,尤其在处理旧项目、日志文件或 Windows 导出的 CSV 时,一上来就卡在“找不到文件”,其实文件就在那儿,只是编码拦路了。











