必须手动启用auto_reload:true才能触发自动重载,但该配置易因wsl2、原子写入或未保存修改而静默失效,且会无警告覆盖未保存内容;reload_modified仅被动提示,两者互斥。

Sublime Text 默认完全不检测外部文件修改,必须手动开启 auto_reload 才可能触发自动重载;但这个开关极易静默失效,且会无警告覆盖你未保存的编辑内容。
怎么正确启用 auto_reload(唯一有效的配置项)
Sublime 原生只认 auto_reload 这一个字段,其他如 always_reload_on_change 是无效配置,加了不仅没用,还可能因 JSON 语法错误导致整个用户设置失效。
- 打开
Preferences → Settings – User(只改右侧面板) - 在 JSON 对象内添加:
"auto_reload": true - 确保格式合法:前后双引号、逗号分隔(若前面还有配置)、无中文标点
- 按
Ctrl+S(Win/Linux)或Cmd+S(macOS)保存,立即生效,无需重启
为什么开了 auto_reload 还不重载?三大静默失效场景
它依赖系统底层监控(Linux 的 inotify、macOS 的 fsevents),一旦环境不支持,就完全不响应,也不报错。
-
WSL2环境下inotify基本不可靠,尤其对/mnt/c/路径 —— 建议改用 Windows 原生 Sublime 或换 VS Code - 原子写入(
Vim、git checkout、webpack输出等)先写临时文件再rename(),Sublime 监听到的是“删除+新建”,无法关联原标签页 - 当前文件有未保存修改时,
auto_reload: true仍会直接丢弃全部编辑内容,不弹窗、不备份、不暂停 —— 这是设计行为,不是 bug
reload_modified 和 auto_reload 到底什么关系?
它们是两个独立开关,行为互斥,不能互补:
-
auto_reload: true:主动监听磁盘事件,一旦变更即尝试静默重载(仅限无未保存修改时) -
reload_modified: true(默认开启):被动检查,只在你切换回该标签页时比对mtime,再弹出「是否重载?」对话框 - 若两者都为
true,auto_reload会接管并屏蔽reload_modified的弹窗
侧边栏不更新?那是另一个机制,和 auto_reload 完全无关
auto_reload 只刷新编辑区文本内容,对侧边栏中的文件图标、增删、目录结构变化毫无感知。比如外部删了一个已打开的 .js 文件,Sublime 编辑区可能还在显示旧内容,而侧边栏仍挂着那个文件名,图标也不变灰。
- 要刷新侧边栏,必须手动执行:
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS)→ 输入Refresh Folders→ 回车 - 前提:项目必须已保存(
Project → Save Project As…),否则 Sublime 按临时会话处理路径,刷新无效 - 排除规则(如
"folder_exclude_patterns": ["node_modules"])不影响刷新动作本身,只影响刷新后看到什么
最危险也最容易被忽略的一点:只要文件有未保存修改,auto_reload 就会静默覆盖——它不判断“哪部分变了”,也不做 diff,就是整份丢弃再读磁盘。如果你常开日志、构建输出等只读但高频变动的文件,务必确认自己清楚这个行为边界。











