必须同时关闭workbench.editor.enablePreview和workbench.editor.reuseEditors才能彻底解决单击和双击覆盖问题:前者禁用预览模式使单击直接打开常驻标签页,后者禁用复用策略确保双击同路径文件也新开标签页,缺一不可。

直接关掉 workbench.editor.enablePreview 就能解决大部分“单击覆盖”问题,但双击覆盖还得额外关 workbench.editor.reuseEditors——漏掉任何一个,都会让你以为设置没生效。
为什么单击文件总在同一个标签页里换内容
这是 VSCode 的预览模式(preview mode)在起作用:单击资源管理器里的文件,默认以斜体标签打开,它不固定、不持久,且后续任何单击都会复用这个标签,视觉上就是“覆盖”。这不是 bug,是设计行为。
- 预览标签不会出现在
Ctrl+Tab切换列表中 - 已存在的预览标签不会因改配置自动转正,得手动右键 →
Keep Open或按Ctrl+K Enter - 即使你固定了其他标签,预览标签仍会覆盖自己——固定只影响常驻标签
- 关闭
workbench.editor.enablePreview后,新打开的文件才默认走常驻流程
为什么双击文件还是覆盖已打开的标签
因为 workbench.editor.reuseEditors 默认为 true,它和预览模式无关,专管“同路径文件是否强制复用当前标签”。哪怕你已固定某个 main.ts,只要双击另一个同 URI 的 main.ts(比如符号链接或绝对路径一致),VSCode 就会把它顶进当前激活标签。
- 跨文件夹同名文件(如
src/main.ts和test/main.ts)通常不触发复用,因 URI 不同 - 仅关
enablePreview不足以阻止双击覆盖,必须同时设"workbench.editor.reuseEditors": false - 改完后无需重启,执行
Ctrl+Shift+P→Developer: Reload Window即刻生效
哪些操作不受 enablePreview 控制,容易被忽略
全局关预览只影响资源管理器单击,其他入口仍有独立开关。如果你关了 enablePreview 还看到斜体标签,大概率是这些地方在“偷偷预览”:
-
Ctrl+Click跳转定义:受workbench.editor.enablePreviewFromCodeNavigation控制 - 搜索结果双击:由
search.editor.doubleClickBehaviour决定,设为"open"可避免预览 - 命令面板(
Ctrl+P)回车打开文件:需配workbench.editor.enablePreviewFromQuickOpen - 拖拽文件到编辑器组或
Alt+Click侧开:属于 editorGroup 行为,不走预览配置,但可能生成临时预览标签
固定标签页 ≠ 防覆盖,也不防关闭
右键 Keep Open 或点图钉图标只是让当前标签脱离预览态,变成常驻标签,但它依然会被以下操作关闭:
-
Ctrl+W(关闭当前焦点编辑器,固定不豁免) - 鼠标中键点击标签页(VSCode 默认绑定为关闭)
- 双击标签页空白处(UI 层直接触发关闭,绕过固定状态)
- 重启 VSCode 后所有固定状态丢失,不持久
真正稳定的方案不是靠一个个固定,而是统一关掉预览和复用策略,让每次打开都默认新开常驻标签——否则你永远在补漏。











