关闭workbench.editor.enablePreview即可让VSCode单击文件直接打开常驻标签页(非预览),避免覆盖;还需同步关闭enablePreviewFromQuickOpen等细粒度预览开关,并启用revealIfOpen: true确保已开文件被聚焦而非重复新建。

直接关掉 workbench.editor.enablePreview 就行
VSCode 的“预览模式”不是 bug,是默认开启的设计:单击资源管理器里的文件,会以斜体标签打开,且下次单击别的文件时,这个标签立刻被替换。想让每次打开都生成常驻标签(不被覆盖、有保存标识、能拖拽排序),唯一可靠做法就是把 workbench.editor.enablePreview 设为 false。
操作路径:Ctrl + ,(Windows/Linux)或 Cmd + ,(macOS)→ 搜索 enablePreview → 取消勾选 Workbench > Editor: Enable Preview。改完立即生效,不用重启;已有的斜体预览页会在你切换焦点或保存后自动转为常驻标签。
注意:必须检查设置右下角是否显示「Workspace Settings」——如果显示,说明你只改了工作区设置,而用户设置里仍是 true,得同步改掉用户设置,否则无效。
workbench.editor.enablePreviewFromQuickOpen 也得关
即使全局关了预览,用 Ctrl + P(快速打开)搜文件回车,仍可能进预览页。这是因为 VSCode 把不同入口的预览逻辑拆开了,workbench.editor.enablePreviewFromQuickOpen 是独立开关。
常见误判场景:
- 搜索结果里双击文件 → 看起来像预览,实际受
search.editor.doubleClickBehaviour控制,设为"open"才避免 - Ctrl+Click 跳转定义 → 默认走预览,需配合
workbench.editor.enablePreviewFromCodeNavigation - GitLens 点提交记录跳文件 → 扩展自己调用预览 API,得查该扩展文档关内部预览
建议:如果你真不想看到任何预览页,把这几个全设为 false:
"workbench.editor.enablePreview": false, "workbench.editor.enablePreviewFromQuickOpen": false, "workbench.editor.enablePreviewFromExplorer": false, "workbench.editor.enablePreviewFromCodeNavigation": false
别信“双击就解决”,它只是临时补丁
很多人说“双击文件就不会被覆盖”,这没错,但它是权宜之计:
- 双击确实绕过预览逻辑,强制常驻打开
- 但你无法阻止同事或新插件触发预览行为(比如 Todo Tree 点待办跳转)
- 预览页没有未保存标识(没圆点),改了几行代码切走再回来,可能发现内容已被新文件覆盖
- Ctrl+Tab 切换最近文件时,预览页默认不计入历史栈,切换顺序变得不可预测
真正影响工作流的是确定性——你点一个文件,就该留下一个可操作、可定位、可拖拽的标签。预览页在编辑器组(split view)里甚至不能拖动,灰掉的状态容易误判为“卡死”。
workbench.editor.revealIfOpen 是个隐藏关键点
关掉预览后,如果再次点击已打开的文件,VSCode 默认会新开一个重复标签页(而不是切过去)。这反而更乱。加这一行就能修复:
"workbench.editor.revealIfOpen": true
它的作用是:点击一个已打开的文件时,直接聚焦到对应标签页,不新建、不预览、不覆盖。这个配置常被忽略,但它才是让多文件工作流真正顺滑的最后一环。
最易被忽略的细节是:预览页本身没有 unsaved changes 提示,也不参与编辑器组的布局计算。哪怕你关掉了所有 enablePreview*,只要没开 revealIfOpen,日常操作中仍会反复遇到“找不回刚才改的文件”这种低级但致命的问题。


















