Sublime Text 原生仅支持 save_on_focus_lost 失焦自动保存,需手动在 User Settings 中添加 "save_on_focus_lost": true;它仅在窗口整体失焦时触发,且要求文件已命名、可写,否则静默失败。

Sublime Text 原生只支持 save_on_focus_lost 这一种失焦自动保存机制,它在你切出整个 Sublime 窗口(比如点到终端、浏览器、桌面)时,对已修改、可写、已命名的文件执行一次真实磁盘写入——不是缓存,不依赖插件,也不卡 UI。
怎么正确启用 save_on_focus_lost
这个设置必须手动写进 User Settings 的 JSON 里,不能靠菜单勾选,也不能写在左侧 Default Settings 中:
- 按
Ctrl + ,(Windows/Linux)或Cmd + ,(macOS)打开设置面板 - 确保你在编辑右侧「User Settings」(左侧是只读项,改了无效)
- 在已有 JSON 的花括号
{}内添加一行:"save_on_focus_lost": true - 注意:前面若有其他字段,末尾必须有英文逗号;引号必须是英文双引号;值只能是小写
true,不能写成"true"或True - 按
Ctrl + S保存该文件,立即生效,无需重启
为什么改了却没反应?常见失效原因
save_on_focus_lost 不是“坏了”,而是被几个硬性条件拦住了:
- 文件是新建未命名的(
untitled):Sublime 不知道存哪,直接跳过,不报错 - 文件路径只读(如
/etc/hosts、Docker volume 挂载点、WSL 权限受限目录):系统拒绝写入,Sublime 静默失败,有时弹权限错误 - 你以为“失焦”了,其实没有:在 Sublime 内部切换 tab、点击侧边栏、呼出命令面板(
Ctrl + Shift + P),都不算窗口失焦 - 配置写错位置或格式:比如写在左侧 Default Settings、少引号、用中文冒号、多一个逗号——整个 User Settings JSON 加载失败,
save_on_focus_lost也跟着失效
别碰 auto_save 类字段,它们根本不存在
网上常见的 "auto_save": true、"auto_save_interval": 60、"auto_save_delay_in_seconds": 1 全部无效:
- Sublime 官方源码和文档中从未定义这些键名,解析器会静默忽略
- 如果同时装了 AutoSave 插件,它可能误读这些字段,以为“原生已启用”,从而禁用自己的核心逻辑,导致自动保存彻底失灵
- 拼写混乱(如
auto_save_delay_msvsauto_save_delay_milliseconds)在 AutoSave v4.1+(2026 年 6 月最新版)中仅auto_save_delay_milliseconds有效,其余全是过时或错误写法
想实现“停笔几秒就保存”?必须换方案
save_on_focus_lost 是失焦触发,不是空闲触发。如果你需要更激进的策略(比如打字停顿 3 秒就落盘),就得关掉它再装插件:
- 先在 User Settings 中删掉或注释掉
"save_on_focus_lost": true - 按
Ctrl + Shift + P→ 输入Package Control: Install Package→ 安装 AutoSave(作者 randy3k,v4.1+) - 配置入口必须是
Preferences → Package Settings → AutoSave → Settings – User,不是通用 User Settings - 真正起效的只有两个字段:
"auto_save_on_idle": true和"auto_save_delay_milliseconds": 3000 -
auto_save_delay_milliseconds别设太小(如500),否则边打字边保存,UI 可能卡顿;对 >5MB 的日志或 SQL 文件,建议 ≥3000
最常被忽略的一点是:失焦保存只响应「整个窗口失去焦点」这一事件,和文件是否已保存、是否只读、是否新建无关——它只看操作系统发来的焦点通知。一旦你开着多个 Sublime 窗口,从 A 切到 B 算失焦,但 A 内部 tab 切换不算。这点不理解,就容易反复怀疑配置写错了。

















