sublime text 无原生命令可一键关闭所有未修改标签页,因close_others和close_all不检测is_dirty()状态,仅遍历view对象;需用sidebarenhancements插件的close unmodified命令,或手动双击转正预览页后逐个关闭。

Sublime Text 没有原生命令能一键关闭所有未修改的标签页。 所有内置关闭命令(close_others、close_all)都不检查文件是否已修改,只按视图存在与否操作。想按“未保存/已修改”状态筛选,必须依赖插件或手动识别。
为什么 close_others 和 close_all 都不区分修改状态
这两个命令底层只遍历当前分栏或窗口中的 view 对象,不读取其 is_dirty() 状态。新建的 untitled 标签、带 * 号的已修改文件、只读的 Find Results 面板,在它们眼里全是“可关对象”。执行后不会弹保存提示,也不会跳过任何一类。
-
close_others(快捷键Ctrl+Alt+W/Cmd+Alt+W):只保留当前焦点标签,其余全关,包括未保存的新建页和Find Results -
close_all(命令面板输入Close All):当前窗口所有标签页一锅端,不管有没有 * 号 - 预览态标签页(斜体、无关闭叉)根本不在这些命令的处理范围内——它甚至不算一个正式
view
真正能按“未修改”筛选的只有插件方案
SideBarEnhancements 插件提供的 Close Unmodified 是目前最可靠的选择。它会主动调用每个 view.is_dirty() 和 view.is_read_only() 判断,跳过所有带 * 号的、只读的、以及预览态标签(后者需先双击转正)。
- 安装插件后,用
Ctrl+Shift+P/Cmd+Shift+P输入Close Unmodified即可触发 - 它不会关掉
Console或Find Results,但会关掉未修改的普通文件标签 - 注意:该命令对多分栏(Group)同样只作用于当前焦点分栏,不会跨组扫描
不用插件时的临时替代方案
纯靠肉眼 + 快捷键组合,适合偶尔清理、不想装插件的场景:
- 先关闭所有预览态标签:逐个双击斜体标签页,让它变成带关闭叉的正式标签(否则任何关闭命令都无效)
- 观察标签页名右侧:没 * 号的,就是未修改;有 * 号的,是已修改;空名或
untitled默认算已修改(因从未保存过) - 对准一个未修改标签,按
Ctrl+W(Win/Linux)或Cmd+W(macOS)逐个关闭;若遇关不掉,换Ctrl+F4(仅 Win/Linux)或鼠标中键点击 - 如果当前分栏里未修改标签集中在左侧,可先点最左一个,再反复按
Ctrl+Tab切到下一个未修改页,再关——避免误触已修改页
最容易被忽略的是预览态标签页:它既不显示 * 号,也不响应 Ctrl+W,更不会被 Close Unmodified 处理,但占内存、干扰视觉。清理前务必先双击转正,否则你以为关完了,其实还挂着一堆“隐形”标签。











