这是 VSCode 的 workbench.editor.reuseEditors 设置默认为 true 导致的:双击或通过命令打开已打开文件时会复用当前标签页;设为 false 后每次均新建标签页,且该设置与预览模式无关,仅影响用户主动打开动作。

VSCode打开新文件时覆盖旧标签页是怎么回事
这是 VSCode 的 workbench.editor.reuseEditors 设置默认为 true 导致的:当你在资源管理器里双击一个文件,或用命令(如 Ctrl+P)打开已打开过的文件时,编辑器会复用(即“覆盖”)当前激活的标签页,而不是新开一个标签页。
关闭覆盖模式只需改一个配置项
打开设置(Ctrl+, 或 Cmd+, ),搜索 workbench.editor.reuseEditors,把它设为 false。或者直接编辑 settings.json,添加:
"workbench.editor.reuseEditors": false
改完后,每次打开新文件(哪怕内容相同、路径相同)都会新建标签页,不会挤掉当前正在看的文件。
- 该设置不影响「在已有标签页中跳转」行为(比如
Ctrl+Click定义跳转仍会在原标签页内打开) - 它只控制「用户主动触发的文件打开动作」是否复用标签页
- 如果同时开了多个编辑器组(split view),每个组独立遵循此设置
为什么有人误以为是“预览模式”问题
其实预览模式(workbench.editor.enablePreview)和复用模式是两回事:enablePreview 控制的是「单击资源管理器文件时是否临时打开预览标签页」;而 reuseEditors 控制的是「双击/确认打开时是否覆盖当前标签页」。很多人关了预览却还被覆盖,就是因为没动后者。
- 预览标签页左下角有「预览」字样,且点击后自动变成常驻标签页
- 即使
enablePreview为true,只要reuseEditors是false,双击依然会新开标签页 - 反之,若
reuseEditors为true,哪怕关了预览,双击同名文件照样覆盖
注意多根工作区下的行为差异
如果你打开了多根工作区(multi-root workspace),workbench.editor.reuseEditors 是全局设置,但实际复用逻辑会受文件所属文件夹影响——跨文件夹打开同名文件(如 src/a.ts 和 test/a.ts)通常不会触发复用,因为路径不同;但同一文件夹下重复打开绝对路径相同的文件,一定会复用(除非设为 false)。
这个细节容易被忽略:你以为关了复用就万事大吉,结果发现「同名不同路径」的文件还是被替换了——其实那不是复用,是 VSCode 检测到你打开了同一个 URI,它认为是同一资源。


















