必须启用 workbench.editor.limit.enabled 为 true,否则 workbench.editor.limit.value 无效;该限制仅在打开第 n+1 个文件时触发,不主动关闭已有标签,且预览模式(enablepreview)常被误认为标签数限制。

VSCode 默认不限制标签页数量,但改了 workbench.editor.limit.value 没反应,八成是 workbench.editor.limit.enabled 还没开——这个开关不启用,其他参数全无效。
为什么设置了最大数量却关不掉旧标签?
核心原因只有一个:配置项 workbench.editor.limit.enabled 仍是 false 或根本没写。VSCode 的限制逻辑只在「打开第 N+1 个文件时」触发,不是后台常驻监控,所以不会主动清理已有标签;它只管“新来者是否被允许进来”。
-
workbench.editor.limit.enabled必须设为true,否则workbench.editor.limit.value完全被忽略 - 该设置只影响「编辑器实例总数」,不是每组独立计数——多 split view 共享同一上限
- 已修改未保存的文件永远不会被自动关闭,这是安全机制,不是失效
- 插件如 TabOut、Auto Close Tag 可能劫持关闭流程,建议先禁用测试
怎么正确配置标签页上限(JSON 写法)
直接编辑 settings.json(Cmd/Ctrl + , → 右上角打开 JSON 图标),添加或修改以下两行:
"workbench.editor.limit.enabled": true, "workbench.editor.limit.value": 15
典型值推荐 10~20:设太小(如 5)会导致刚切走的文件立刻被关;设太大(如 50)则内存和 UI 响应明显变慢。注意:value 不支持 0 或 -1,这些值会被 VSCode 忽略并回退到无限制。
预览模式(Preview Mode)才是“只能开两个标签”的真凶
很多人以为标签数被锁死,其实是 workbench.editor.enablePreview 在作祟。默认为 true 时,单击文件只是临时预览,再点另一个就覆盖前一个——看起来像“最多两个”。
- 关掉它:
"workbench.editor.enablePreview": false,所有单击都变成常驻打开 - 搭配
"workbench.editor.enablePreviewFromQuickOpen": false,防止 Ctrl+P 跳转也触发预览 - 中键点击 / Ctrl+Click 文件名,100% 强制常驻,完全绕过预览逻辑
- 这个设置是用户级的,若某项目需例外,可在项目根目录
.vscode/settings.json单独覆盖
标签太多时,宽度和分组比硬限更实用
单纯靠数量限制治标不治本。标签栏挤成细条后,人眼根本分不清哪是哪,反而降低效率。
- 设
"workbench.editor.tabsizing": "shrink"或"fit"让标签自适应内容 - 调窄最小宽度:
"workbench.editor.tabminwidth": 50(单位像素) - 用
Ctrl+\快速分屏,把相关文件拖进不同 editor group,视觉隔离比堆在一行更有效 - 固定关键文件(右键标签 → “Keep Open”)可防止被 LRU 策略误关
真正容易被忽略的是:limit.enabled 和 enablePreview 这两个布尔开关,它们不依赖数值,但决定了整个标签行为的底层逻辑。改错一个,其他所有优化都白搭。











