必须开启 workbench.editor.limit.enabled 才能使 workbench.editor.limit.value 生效;预览模式(enablePreview)影响计数,需设为 false 以禁用预览;分栏独立限制需启用 workbench.editor.limit.perEditorGroup。

VSCode 默认不限制标签页数量,但你改了 workbench.editor.limit.value 却没效果,大概率是因为 workbench.editor.limit.enabled 还是 false——这个开关没开,其他设置全白搭。
为什么改了 workbench.editor.limit.value 却不关旧标签
限制逻辑只在「打开第 N+1 个文件瞬间」触发,不是后台常驻清理。已有标签不会被主动关闭,哪怕你刚设完 "workbench.editor.limit.value": 10,当前开着 20 个标签也不会立刻消失。
- 必须先确保
"workbench.editor.limit.enabled": true已写入settings.json(UI 设置里找不到这个开关) -
workbench.editor.limit.value是整个编辑器栈的总上限,不是每栏上限 - 被关闭的标签必须同时满足:未保存、非聚焦、未锁定、且属于 LRU 链表尾部
- 已修改未保存的文件一定豁免,这不是 bug,是安全机制
workbench.editor.enablePreview 关不关,直接影响你“能不能多开”
很多人以为标签页少是限制造成的,其实是预览模式在作祟:默认点击资源管理器文件是 preview 模式,标签斜体、双击即覆盖,根本不算“已打开”。
- 设
"workbench.editor.enablePreview": false后,每次单击都新建固定标签页 - 否则即使
limit.enabled开了,preview文件也不计入计数,导致你以为“还有名额”,实际点一下就顶掉前一个 - 这个配置必须重启 VS Code 才生效,热重载不认
分栏场景下,workbench.editor.limit.perEditorGroup 决定是否各自计数
如果你常用 Ctrl+\ 拆分左右编辑器组,并希望两边能各开 15 个文件,而不是总共只能开 15 个,就得打开独立计数。
- 默认
false:左右两栏共享同一个上限,左栏开满 15,右栏再点一个就会触发关闭 - 设为
true:每组单独计数,适合源码 + 测试 + 日志并排对照 - 注意:它只影响自动关闭行为,不缓解标签栏渲染卡顿;低配机器上仍建议把
value控制在 20 以内
标签栏看不见 / 总是只剩一个?先查这三个开关
“只能开一个文件”的错觉,90% 来自三个配置项的组合误配:
-
workbench.editor.showTabs设成了single或none→ 标签栏压根不显示,只剩顶部细线 -
workbench.editor.openPositioning设成了active→ 新文件强制覆盖当前活动标签,而不是右侧新增 -
workbench.editor.limit.value被误设为1→ 真的只允许一个编辑器实例
这些都要手动进 settings.json 改,UI 设置界面搜索不到完整选项名,尤其 openPositioning 只暴露为“新文件打开位置”,实际值却是字符串 "right"、"first" 等。
最易忽略的一点:工作区级 .vscode/settings.json 会覆盖用户级设置,团队协作时如果想统一行为,直接写进项目根目录比口头约定靠谱得多。











