必须将 workbench.editor.limit.enabled 设为 true 才启用标签页数量限制,否则 workbench.editor.limit.value 无效;该限制仅在打开第 N+1 个文件时按 LRU 策略关闭非活动、未保存的旧标签,不主动清理已有标签。

workbench.editor.limit.enabled 必须设为 true 才生效
VSCode 默认完全不限制标签页数量,workbench.editor.limit.value 单独设置毫无作用。很多人只加了 "workbench.editor.limit.value": 15,但没开总开关,结果改完 settings.json 完全没反应——不是配置写错了,是根本没启用限制逻辑。
必须显式加上:"workbench.editor.limit.enabled": true。这个布尔值是总闸门,false 就等于没装限流阀。它只在用户级 settings.json(Cmd/Ctrl + , → 右上角打开 JSON)或工作区级 .vscode/settings.json 中生效,UI 设置界面里找不到这个选项。
workbench.editor.limit.value 设多少合适
这个值不是“显示几行标签”,而是整个编辑器栈中允许存在的最大编辑器实例数。超出时,VSCode 按 LRU(最近最少使用)策略关闭最久未激活的标签,但仅限于满足以下全部条件的文件:
- 未被右键 → Keep Open(带锁图标)
- 未聚焦、非活动状态(哪怕刚写两行,切走就可能被顶)
- 已保存(有修改未保存的文件绝不会被关)
典型推荐值:
-
5~8:太小,临时scratch.ts切走立刻消失,影响快速验证 -
12~20:多数人平衡点,兼顾多文件比对和响应速度 -
50+:低配机器上标签栏渲染明显变慢,尤其开启多行显示后
workbench.editor.limit.perEditorGroup 控制分栏是否独立计数
默认 false,左右两个编辑器分组共享同一个上限;设为 true 后,每组各自计数。适合并排看源码 + 测试 + 日志这类场景:
- 左栏打开 10 个、右栏再开 10 个,都不会触发自动关闭
- 但它只影响「自动关闭行为」,不影响标签页 UI 渲染性能
- 若你常用 split view,建议直接设为
true,避免误关一侧的重要文件
注意:该配置必须和 enabled、value 同时存在才有效,缺一不可。
为什么改了设置没立刻关掉已有标签
VSCode 的编辑器限制逻辑只在「新标签页打开时」触发,不是后台常驻监控。所以改完设置不会立刻清理已有标签,要等下一次打开第 N+1 个文件才生效。
容易被忽略的关键点:
- 预览模式(
workbench.editor.enablePreview默认true)下的文件不算「已打开」,容易误判剩余名额;建议设为false更符合直觉 - 被顶掉的文件若未保存,重启后会丢失——务必确认
workbench.editor.reopenLastSession为true(默认已是) - 右键标签页 → Keep Open 是唯一能豁免自动关闭的机制,关键配置/日志/README 建议手动锁定


















