启用 save_on_focus_lost 即可实现安全自动保存:仅在窗口失焦时保存已修改文件,不碰未改、只读或新建文件;禁用无效的 auto_save 配置,避免与 AutoSave 插件冲突。

直接用 save_on_focus_lost 就够了,别碰 auto_save
Sublime Text 原生唯一稳定、无副作用的自动保存方式,就是启用 save_on_focus_lost。它不是“实时保存”,但足够安全:只在你切出整个 Sublime 窗口(比如点到终端、浏览器、桌面)时,对当前有修改的文件执行一次保存——未改动的不写盘,只读文件不误存,崩溃断电前至少能保住最后一次失焦前的内容。
- 按
Ctrl + ,(Windows/Linux)或Cmd + ,(macOS)打开设置 - 确保编辑的是右侧「User Settings」(左侧是只读默认项)
- 在花括号
{}内添加一行:"save_on_focus_lost": true - 保存文件(
Ctrl + S),立刻生效,无需重启
网上流传的 "auto_save": true、"auto_save_interval": 60 等字段,Sublime 官方从未支持,属于过时/错误配置,加了也没用,还可能干扰插件行为。
AutoSave 插件怎么配才不冲突
如果你真需要“敲字停顿 2 秒就保存”或“每 30 秒强制落盘”,那得靠 AutoSave 插件(作者 randy3k)。但它和原生 save_on_focus_lost 不兼容——两者同时开启会导致同一文件被重复保存,不仅浪费 I/O,还可能在编辑大型日志或被外部进程读取时引发冲突。
- 先在用户设置里删掉或注释掉
"save_on_focus_lost": true - 安装插件:
Ctrl + Shift + P→ 输入Package Control: Install Package→ 搜索AutoSave并安装 - 配置路径:
Preferences → Package Settings → AutoSave → Settings - 写入示例(延迟 3 秒空闲后保存):
{ "auto_save_on_idle": true, "auto_save_delay_milliseconds": 3000 }
auto_save_delay_milliseconds 别设太小(如 500),否则边打字边保存,UI 可能卡顿;对几百 MB 的 SQL 或日志文件,建议 ≥3000。
为什么切换 tab 不触发保存?这是设计,不是 bug
你只是在 Sublime 内部切换 tab,没切出整个窗口,那不算“失焦”,不会触发 save_on_focus_lost。它只响应「窗口失去焦点」这一事件,跟文件是否已保存、是否只读、是否新建未命名,都无关。
- 想让切换 tab 也保存?做不到——原生不支持,插件也不该强行模拟
- 如果依赖这种行为,说明工作流本身有风险:比如一边写一边调试,又没手动保存,一旦崩溃就丢内容
- 更稳妥的做法是养成「改完关键段落就按
Ctrl + S」的习惯,或配合 Git 提交节奏
新文件、只读文件、大文件的保存逻辑差异
save_on_focus_lost 对三类文件处理不同,这点容易被忽略:
- 新建未命名文件(如
untitled):失焦时不会自动保存,会弹出保存对话框——这是保护机制,防止误存乱码路径 - 只读文件(如权限为
chmod 444):失焦时跳过,不报错也不覆盖,避免权限错误中断流程 - 超大文件(>100MB):保存动作仍发生,但可能卡 UI;此时插件的
auto_save_on_idle若延迟太短,反而加重负担
真正防丢的关键,不是追求“全自动”,而是清楚知道什么情况下它会动、什么情况下它不动。否则配置写了,以为万事大吉,结果一关窗口发现没存上——那不是工具问题,是预期没对齐。










