是,但仅在激活标签页等特定时机检测;默认启用 reload_modified,需确保设置为 true,且文件非只读,外部修改后须切换回对应标签页才会弹出重载提示。

Sublime Text 会自动检测外部文件修改吗?
默认情况下,Sublime Text 不会实时监听文件系统变化,也不会在状态栏持续显示“已外部修改”提示。它只在特定时机检查:比如切换回该标签页、执行保存操作、或手动触发重载时。这意味着你可能正在编辑一个已被 Git、IDE 或其他编辑器覆盖的文件,而 Sublime 完全不提醒你。
如何让 Sublime 显示“文件已被外部修改”警告?
需要启用 reload_modified 并配合正确的触发时机。这个设置控制 Sublime 是否在检测到磁盘文件变更后弹出提示框(含“Reload”、“Ignore”按钮):
-
reload_modified默认为true(较新版本),但若被设为false就彻底关闭该行为 - 它只在你激活该文件视图(点击标签页或
Ctrl+Tab切入)时触发检查,不是后台常驻监听 - 如果文件是只读的(如权限限制或
chmod -w),Sublime 不会弹窗,但会在状态栏显示read only
检查方法:打开 Preferences → Settings,确认用户设置中有:
{
"reload_modified": true
}
为什么有时没弹窗,但文件内容确实变了?
常见原因不是设置问题,而是触发条件未满足:
- 你在外部改了文件,但一直没切回 Sublime 的对应标签页 —— 它根本没检查
- 文件被修改后,Sublime 还处于“未聚焦”状态(例如最小化、切换到其他应用),此时不触发检测
- 使用了
atomic_save(默认true):外部程序用原子写法(先写临时文件再 rename)可能导致 Sublime 暂时无法识别变更时间戳 - 网络文件系统(如 SMB/NFS)或 WSL 路径下,
mtime同步延迟,Sublime 读到的仍是旧时间戳
想真正实时同步?只能靠插件或外部工具
原生 Sublime 没有文件系统 inotify/watchdog 支持。若需接近实时响应,可装插件:
-
Auto Reload:基于定时轮询(如每 2 秒查一次mtime),适合本地文件,但增加 I/O 开销 -
SyncedSideBar类插件不解决此问题,它们管的是侧边栏刷新,不是编辑区内容一致性 - 更可靠的做法是避免并行编辑:把 Sublime 当作唯一编辑器,或用
git status/ls -l --full-time手动核对修改时间
注意:Auto Reload 插件的轮询间隔不能设太小(如 100ms),否则在大项目里会导致 CPU 毛刺和卡顿。










