关闭 workbench.editor.enablepreview 和 workbench.editor.reuseeditors 两项配置,才能确保单击或双击文件均稳定新开常驻标签页;仅关其一只能缓解覆盖问题。

点击文件时覆盖已打开标签页,根本不是“误操作”,而是 VSCode 默认开启预览模式(workbench.editor.enablePreview)+ 复用编辑器(workbench.editor.reuseEditors)两个配置共同作用的结果。关掉其中一个,问题只会缓解;两个都关,才能稳定新开标签页不覆盖。
为什么单击资源管理器文件会覆盖当前标签页
这是 workbench.editor.enablePreview 在起作用:单击文件 → 以预览标签页(斜体、无图钉、左下角标“预览”)打开 → 它本质是临时占位,后续任何新单击都会复用这个预览标签,造成“覆盖假象”。注意:这不是关闭旧文件,只是把旧内容替换成新内容,原文件仍保留在后台,但标签页视觉上消失了。
- 预览标签不会出现在
Ctrl+Tab切换列表里 - 双击该预览标签,它会自动“转正”为常驻标签(字体变正、不再被覆盖)
- 按
Ctrl+K Enter也能让当前预览标签立刻转正 - 即使你已固定了其他标签,预览标签仍会覆盖自己——固定只影响常驻标签的生命周期
如何让单击文件也新开常驻标签页(非预览)
直接禁用预览模式即可,这是最干净的解法:
- 打开设置(
Ctrl+,),搜索workbench.editor.enablePreview - 取消勾选,或在
settings.json中添加:"workbench.editor.enablePreview": false - 重启 VSCode 或重载窗口(
Ctrl+Shift+P→Developer: Reload Window)生效
此后所有单击行为都会直接打开常驻标签页,不会再有“预览→覆盖”流程。注意:这不影响 Ctrl+Click 跳转定义(它本就强制在原标签内打开),也不影响右键菜单里的“Open to the Side”等显式拆分操作。
双击文件仍被覆盖?检查 reuseEditors 是否开着
即使关了预览,双击同名文件(比如两次双击 index.ts)仍可能覆盖——这是 workbench.editor.reuseEditors 的锅,默认为 true,表示“已打开的文件复用当前激活标签”。它和预览无关,只响应用户确认式打开动作(双击、Ctrl+P 回车、命令面板打开等)。
- 在设置中搜
workbench.editor.reuseEditors,设为false - 或加配置:
"workbench.editor.reuseEditors": false - 改完后,哪怕路径完全相同,每次双击都会新开一个标签页
- 多根工作区下,跨文件夹的同名文件(如
src/a.js和test/a.js)本来就不会复用,因为 URI 不同;只有绝对路径一致才触发复用逻辑
固定标签页 ≠ 防覆盖,别混淆这两个机制
很多人以为点了图钉图标就能一劳永逸,其实 Pin Tab 只解决“不让新文件挤掉我”,不解决“我自己是不是预览态”。如果你固定的是一个预览标签(比如刚单击完就去点图钉),它仍然会消失——因为预览标签无法被固定,VSCode 会静默忽略该操作。
- 固定操作只对常驻标签有效;预览标签必须先双击或
Ctrl+K Enter转正,再右键Pin Tab - 固定后的标签仍会被
Ctrl+W、鼠标中键点击、右键Close All Other Editors关掉 - 所有固定状态重启即丢,没有配置项能持久化——这不是 bug,是设计如此
- 如果发现固定后还是被顶掉,大概率是启用了
workbench.editor.limit.enabled(编辑器组标签数限制),务必检查并设为false











