未保存文件不显示*星号,是因为phpstorm开启了自动保存(如切出窗口或空闲时保存),导致内存与磁盘内容实时一致,编辑器判定无未保存状态;需同时关闭两项自动保存选项,并在editor tabs中启用mark modified tabs with asterisk。

未保存文件不显示 * 星号,说明 PhpStorm 正在自动保存——它根本没把“修改状态”当回事,你也就失去了视觉提醒。 要让修改过的文件在 tab 上标 *,必须关掉自动保存机制,并显式启用星号标记。
为什么改了代码但 tab 没有 * 号
根本原因是 Save files on frame deactivation 或 Save files automatically if application is idle for N seconds 被勾选了。只要任一开启,PhpStorm 就会在失焦或空闲时立刻写入磁盘,内存和文件内容始终一致,编辑器认为“没有未保存变更”,自然不标 *。
这不是 bug,是设计逻辑:自动保存开启 → 无未保存状态 → 不显示星号。
- 检查顶部菜单栏是否显示 Power Save Mode:开了它会禁用所有后台保存行为,反而让星号出现(但文件真没存)
- 右下角状态栏若出现锁形图标,说明当前文件只读,
*可能被抑制(即使没自动保存) - 项目根目录下如果有
.idea/workspace.xml被手动修改过,极少数情况会覆盖 UI 行为,但概率很低
关闭自动保存的两个必要操作
仅取消一个选项不够,必须同时关闭以下两项:
-
Save files on frame deactivation(切出窗口时保存) -
Save files automatically if application is idle for N seconds(空闲 N 秒后保存)
路径:File → Settings(Windows/Linux)或 PhpStorm → Preferences(macOS)→ Appearance & Behavior → System Settings。
注意:Use "safe write" 和 Synchronize files on frame activation 不影响星号显示,但若你同时想避免文件被外部程序覆盖,可按需关闭前者、开启后者——它们和 * 标识无关。
启用星号标识的唯一开关
关闭自动保存后,* 还是不会出现,因为该功能默认是关闭的。
必须手动打开:
Settings → Editor → Editor Tabs → 勾选 Mark modified tabs with asterisk。
这个设置独立于保存行为,只控制 UI 标识。一旦启用,只要文件内容与磁盘不一致(即真正“未保存”),tab 名右侧就会立即显示 *。
常见疏漏:
– 在 Settings 搜索框输 asterisk 比翻层级更快
– 如果用了插件如 Save Actions 或 Auto Saver,它们可能绕过原生设置强制保存,导致星号再次消失——此时要进插件设置里关掉其自动保存功能
远程开发或 WSL 下的特殊表现
在 SSH 部署、SFTP 挂载或 WSL2 文件系统中,即使本地关闭了自动保存,文件写入延迟或权限异常也可能导致 PhpStorm 误判“已同步”,从而不标 *。
验证方法:
– 修改一行,执行 ls -l your-file.php 看修改时间是否变化
– 若时间未变但 tab 也没 *,大概率是文件系统层返回了“写入成功”假信号,建议在本地路径测试确认逻辑正常后再排查环境
这类场景下,* 标识不可靠,更值得依赖的是 Local History 快照(每 10 分钟自动存一次),而不是视觉提示。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










