必须手动启用 auto_reload 配置才能使 Sublime 自动重载外部修改的文件内容,该配置是唯一有效开关;其生效依赖系统文件监控机制,且未保存编辑时会静默覆盖内容。

必须手动开启 auto_reload,否则 Sublime 永远不会自动重载外部修改的文件内容。
怎么正确启用 auto_reload
这个配置是唯一控制「已打开文件是否随磁盘变化自动更新」的开关,其他字段如 always_reload_on_change 是无效字段,Sublime 原生不识别。
- 按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入Preferences: Settings – User回车 - 在右侧用户配置中添加:
"auto_reload": true - 确保 JSON 格式合法:前后逗号位置正确、引号闭合、不漏大括号
- 保存即生效,无需重启 Sublime
为什么开了 auto_reload 还不刷新
它依赖系统级文件监控(Linux 用 inotify,macOS 用 fsevents),一旦底层失效,auto_reload 就静默不工作,且不报错、不提示。
- WSL2 环境下基本不可用:
inotify支持极差,建议改用 Windows 原生 Sublime 或换 VS Code - 文件被原子写入(如 Vim、Git checkout、webpack 输出):先写临时文件再
rename,Sublime 监听到的是“删除+新建”,无法关联原标签页 - Linux 报
inotify_add_watch failed: No space left on device:其实是fs.inotify.max_user_watches耗尽,需调高内核参数 - macOS 上没给 Sublime「完全磁盘访问」权限:
fsevents被系统拦截,需手动在「系统设置 → 隐私与安全性 → 完全磁盘访问」中勾选
未保存编辑时 auto_reload 会直接丢内容
这是最危险也最容易被忽略的一点:只要当前文件有未保存修改,auto_reload: true 触发时,Sublime 会静默覆盖你全部编辑内容,不弹窗、不询问、不备份。
- 务必确认
hot_exit和remember_open_files均为true(默认已是,但建议检查) - 如果你常编辑日志、构建输出等只读但频繁变动的文件,可考虑加
"atomic_save": false,但这只影响你自己的保存行为,对外部写入无帮助 -
reload_modified不是监听机制,只是切换回标签页时检查 mtime 并弹提示,不能替代auto_reload
侧边栏文件树不更新?那是另一个机制
文件内容自动重载 ≠ 文件树自动同步。Sublime 默认不监听目录结构变化,删了一个 .js 文件,它不会关 tab,也不会从侧边栏消失——它根本不知道文件已被删。
- 手动刷新侧边栏:快捷键
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入refresh folders回车 - 前提:项目必须已保存(
Project → Save Project As…),否则 Sublime 当作临时会话,刷新无效 -
folder_exclude_patterns等排除规则只影响“刷新后看到什么”,不影响刷新动作本身
自动重载只管「文件内容是否更新」,不管「文件是否存在」或「目录结构是否变动」。这个边界很清晰,但也容易误判失效原因——很多人以为 auto_reload 没起作用,其实只是侧边栏没刷新,或者系统监控本身已瘫痪。











