最稳防丢方式是启用原生save_on_focus_lost:窗口失焦时立即保存已修改文件,不依赖插件、不刷磁盘、不生成备份;若需空闲保存,须关闭该选项并配置autosave插件的auto_save_on_idle与auto_save_delay_milliseconds。

Sublime Text 原生不自动保存编辑内容,所谓“自动保存”必须靠 save_on_focus_lost 或插件组合实现;开错配置项(比如误配 auto_save_delay_in_seconds)或混用多个保存机制,反而导致行为不可控、快照冗余甚至静默失败。
开 save_on_focus_lost 是最稳的防丢方式
它不依赖插件、不刷磁盘、不生成备份文件,只在你切出 Sublime 窗口时立刻把当前所有已修改文件写回磁盘——适合绝大多数日常编码场景。
- 打开
Preferences → Settings,在右侧用户设置中添加:"save_on_focus_lost": true - 新建未命名文件(
untitled:标签页)不触发此行为,必须先手动保存一次才有路径可写 - 顺手关掉
"hot_exit": false和"remember_open_files": false,避免和save_on_focus_lost冲突(尤其在多窗口时) - 这个设置对 Git 友好:不会在未提交前产生多余 diff,也不会干扰 Webpack / nodemon 等监听进程
用 AutoSave 插件定时保存?注意毫秒陷阱和优先级
AutoSave 插件的定时逻辑只在 auto_save_on_focus_lost 关闭时才生效,且延迟单位是毫秒(auto_save_delay_in_ms),不是秒——设成 1 就等于 1 毫秒,根本来不及触发。
- 想 3 秒无操作后保存:配
"auto_save_delay_in_ms": 3000,同时确保"auto_save_on_focus_lost": false - 如果同时开了 Sublime 内置的
save_on_focus_lost,插件的定时保存大概率被跳过——失焦保存优先级更高 - Windows 下用
copy命令做auto_save_hook备份时,路径含空格必须用双引号包裹"$file",单引号在 cmd/powershell 中无效 - 该钩子每次覆盖旧
.bak,只留最后一次,不是版本历史
Local History 插件才是真正的时间戳快照
它和 AutoSave 不是一回事:前者存副本(.sublime-history/),后者只是把当前内容写回原文件。两者混开容易在 1 秒内连发保存+快照,造成冗余或因文件被占用而失败。
- 通过 Package Control 安装
Local History(作者 kemayo),默认每 2 分钟自动抓取,也可手动调用:Ctrl+Shift+P → Local History: Save Current File - 快照只响应 Sublime 内部编辑动作;命令行直接改文件、Git checkout、外部工具覆盖,它完全感知不到
-
.sublime-history/必须留在项目根目录下,挪到外面或删掉就丢历史——它不加密、不压缩、不校验,仅用于临时回滚 - 别让 AutoSave 的
auto_save_on_modified开着,建议只留auto_save_when_focus_lost,和 Local History 配合更干净
真正该开的其实是 hot_exit + remember_open_files
这两个内置开关才是断电、崩溃后恢复未保存内容的底层保障。只要 Sublime 进程没被强制杀掉,重启后所有标签页、光标位置、未保存修改全在——比任何外部备份都快、都准。
- 在
Preferences → Settings中确认它们是true:"hot_exit": true,"remember_open_files": true - 每个窗口状态独立保存,关错窗口会导致其他窗口的历史丢失
- 它们不生成任何文件,也不依赖插件,但一旦被关掉(比如为了“省资源”),所有未保存内容就真没了
- 和
save_on_focus_lost共存没问题,但要注意:如果开着hot_exit,又频繁失焦保存,可能造成重复落盘(无害但略低效)
最容易被忽略的是:save_on_focus_lost 对新建文件无效,Local History 不监控外部变更,hot_exit 在强制杀进程后失效——这些边界条件不提前意识到,备份策略就会在关键时刻掉链子。











