sublime text 唯一有效的防丢代码机制是 save_on_focus_lost:在窗口失焦时立即保存已修改的命名且可写文件;需在 user settings 中正确配置为 true,而所有 auto_save 相关字段均无效。

Sublime Text 没有“自动保存”开关,唯一真正生效、防断电丢代码的原生机制是 save_on_focus_lost;所有带 auto_save 的字段都是无效配置,加了不仅不工作,还可能让插件失灵。
怎么正确启用 save_on_focus_lost 防丢代码
它不是后台定时写入,而是在你点击终端、浏览器、桌面等外部程序时,立刻对已修改且可写的文件执行一次真实 write()——这是 Sublime 唯一原生落盘的防丢方案。
- 按
Ctrl + ,(Windows/Linux)或Cmd + ,(macOS)打开设置,确保编辑的是右侧「User Settings」 - 在已有 JSON 的
{}内添加一行:"save_on_focus_lost": true,注意英文双引号、小写true、前面字段末尾要有逗号 - 按
Ctrl + S保存,立即生效,不用重启 - 验证:改几行 → 点击桌面 → 切回 Sublime → 查看文件修改时间是否更新
save_on_focus_lost 不生效?先排查这四个硬性条件
它不会报错,但会静默跳过——不是 bug,是设计限制:
- 文件是新建未命名的(
untitled:)→ Sublime 不知道存哪,直接跳过 - 路径只读(如
/etc/hosts、WSL 挂载点、Docker volume)→ 系统拒绝写入,Sublime 不提示 - 你只是在 Sublime 内部切换 tab、呼出命令面板(
Ctrl + Shift + P)、点侧边栏 → 这些不算「窗口失焦」,不触发 - 配置写错位置(比如写进左侧 Default Settings)或语法错误(少引号、多逗号)→ 整个 User Settings 加载失败,
save_on_focus_lost也失效
别碰 auto_save、auto_save_interval 这类字段
这些键名在 Sublime 官方源码里根本不存在,JSON 解析器会静默忽略,但副作用很实在:
-
"auto_save": true、"auto_save_delay_in_seconds": 1、"auto_save_interval": 60全部无效,加了等于白加 - 如果装了 AutoSave 插件(作者 randy3k),它可能误读这些字段,以为「原生已启用」,从而禁用自己的核心逻辑
- 网上混用的
auto_save_delay_ms、auto_save_delay_in_ms等写法,在 AutoSave v4.1+ 中只有auto_save_delay_milliseconds起效 - 一个错位逗号或漏引号,会让整个 User Settings 失效——连
save_on_focus_lost都不工作
想要「停笔几秒就保存」?必须换方案,且不能和 save_on_focus_lost 共存
原生机制不支持空闲触发。要实现类似 Notepad++ 的停顿保存,得关掉 save_on_focus_lost,再装插件:
- 先在 User Settings 中删掉或注释掉
"save_on_focus_lost": true - 按
Ctrl + Shift + P→ 输入Package Control: Install Package→ 搜索安装AutoSave(作者必须是randy3k,v4.1+) - 配置入口不是通用 User Settings,而是:
Preferences → Package Settings → AutoSave → Settings – User - 最小可用配置只含两个字段:
"auto_save_on_idle": true和"auto_save_delay_milliseconds": 3000(建议 ≥1500,
最常被忽略的是:两者互斥。同时开启会导致同一文件被重复保存,编辑大日志或被 webpack / nodemon 监听时容易卡死或冲突。











