必须同时设为false:workbench.editor.enablePreview控制单击预览,workbench.editor.reuseEditors控制双击/命令打开复用;仅关前者,双击等操作仍会覆盖当前标签页。

必须同时关掉 workbench.editor.enablePreview 和 workbench.editor.reuseEditors,否则总有一路会继续替换标签。
为什么只关 workbench.editor.enablePreview 不够
这个设置只管「单击资源管理器文件」是否走预览逻辑。关掉后,单击确实会生成常驻标签(正体、带圆点、可拖拽),但双击、Ctrl+P 搜索回车、命令面板打开、甚至终端里执行 code file.ts,仍可能覆盖当前标签——因为这些操作受 workbench.editor.reuseEditors 控制,默认为 true。
它不是“复用已打开的文件”,而是“复用当前编辑器组里最右侧那个空闲/非聚焦的标签位”。哪怕你开了 10 个标签,只要双击一个已打开的文件,VSCode 就会跳回去并把当前活动标签的内容替换成那个文件。
- 只设
"workbench.editor.enablePreview": false→ 单击安全,双击/命令打开仍可能覆盖 - 只设
"workbench.editor.reuseEditors": false→ 双击/命令打开安全,但单击仍是斜体预览,再点下一个就丢内容 - 两个都设为
false→ 所有常规打开方式(单击、双击、Ctrl+P、终端code)都新开常驻标签,不覆盖
怎么改才真正落地
图形界面容易被工作区设置覆盖,推荐直接编辑 settings.json:
按 Ctrl + Shift + P → 输入 Preferences: Open User Settings (JSON) → 在 } 前添加:
"workbench.editor.enablePreview": false, "workbench.editor.reuseEditors": false
保存后执行 Developer: Reload Window(Ctrl + Shift + P 输入即可),不用重启整个 VSCode。
- 已存在的斜体预览标签不会自动变正体,需右键该标签 →
Keep Open,或双击标签名一次 - 如果右下角显示
Workspace Settings,说明你只改了当前项目,用户级设置仍是true,得同步改用户设置 - 改完后新打开的文件全部是正体标签,未保存时带圆点,拖拽、分组、Ctrl+Tab 切换都正常参与
哪些操作还会绕过这两个开关
VSCode 把预览控制拆得很细,有些路径完全无视主开关,必须单独配:
-
Ctrl+Click(Windows/Linux)或Cmd+Click(macOS)跳转定义:需加"workbench.editor.enablePreviewFromCodeNavigation": false -
Ctrl+P模糊搜索后回车:需加"workbench.editor.enablePreviewFromQuickOpen": false - 搜索结果面板中双击文件:设
"search.editor.doubleClickBehaviour": "open" - 某些扩展(如 GitLens blame 行点击)调用的是预览 API,得查其文档看是否有类似
enablePreview的选项
注意:Ctrl+Click 在资源管理器里单击文件是硬编码行为,无法通过配置禁用——这是 VSCode 内部逻辑,连 enablePreviewFromExplorer 都不生效。
最容易被忽略的坑:预览页没有 unsaved changes 标识
斜体标签页从不显示圆点,你改了 5 行代码,切去终端执行命令,再回来发现内容被新文件覆盖了——这不是崩溃,是预览页被复用了。它不进 Ctrl+Tab 历史,不能拖拽,也不能被 Close All Other Editors 清掉,但会被任何后续打开动作无声顶替。
所以真要“彻底关闭预览模式”,核心不是让标签看起来不斜体,而是让每次打开都产生一个能被编辑器生命周期正确识别的常驻实体。这需要两个布尔值都关,且得确认它们落在用户级配置里,而不是被工作区或扩展悄悄覆盖。











