VSCode标签页数量上限由workbench.editor.limit.enabled控制,设为true才启用限制;workbench.editor.limit.value设定最大编辑器实例数(如10~20),超限时按LRU策略关闭非活动、未保存的旧标签。

VSCode 标签页数量上限由 workbench.editor.limit.enabled 控制
VSCode 默认不限制打开的编辑器标签数量,但内存和界面响应会随标签增多明显下降。真正起作用的是这个布尔配置项:它开启后,才允许后续的「数量限制」和「自动关闭旧标签」逻辑生效。很多人改了 workbench.editor.limit.value 却没效果,就是因为漏关了这个开关。
- 必须设为
true,否则其他限制参数完全不生效 - 修改位置:
settings.json(Cmd/Ctrl + , → 右上角打开 JSON) - 不建议通过 UI 设置开关,容易被隐藏或重置
workbench.editor.limit.value 决定最多保留几个标签
这个数字不是“同时显示”的标签数,而是整个编辑器栈中允许存在的最大编辑器实例数。超出时,VSCode 会按 LRU(最近最少使用)策略关闭最久未激活的标签——但仅限于未保存、未聚焦、非活动组中的标签。
- 典型值设为
10~20比较平衡;设太小(如5)会导致频繁关闭刚切走的文件 - 对已修改未保存的文件,VSCode 会跳过关闭,哪怕超限;这是安全机制,不是 bug
- 多编辑器组(split view)共享同一限制值,不是每组独立计数
为什么改了设置还是关不掉旧标签?检查这三点
常见失效场景不是配置写错,而是被更高优先级行为覆盖:
-
workbench.editor.revealIfOpen设为true(默认)时,重复打开同一文件不会新增标签,也就不会触发关闭逻辑 - 使用
Ctrl+Tab切换历史时,VSCode 会临时“复活”已关闭的编辑器,造成「好像没限制」的错觉 - 插件如
Auto Close Tag或EditorConfig一般不影响,但某些标签管理类插件(如TabOut)可能劫持关闭流程
想彻底禁用自动关闭?只关 limit.enabled 就够了
不需要删配置或设成 0 或 -1——这些值 VSCode 不识别,会被忽略回退到无限制状态。直接把 workbench.editor.limit.enabled 改成 false,所有相关逻辑立刻停摆,行为回归默认。
注意:这个开关是全局生效的,没有工作区级覆盖选项;如果团队协作,建议在 .vscode/settings.json 里明确写出来,避免有人误开。











