关掉workbench.editor.enablePreview是根本解决方法:设为false后单击文件即成常驻标签(带未保存圆点、可拖拽、不被覆盖),但需同步修改用户级设置;Ctrl+P、跳转定义等路径另有独立预览开关,还需分别关闭。

关掉 workbench.editor.enablePreview 是唯一生效操作
VSCode 标签栏里文件名变斜体、Ctrl+Tab 切不到、拖拽时灰掉不可操作——全是因为预览模式开着。设 workbench.editor.enablePreview 为 false 后,所有单击打开的文件都会变成带圆点(未保存标识)、可拖拽、不被覆盖的常驻标签页,且修改立即生效,不用重启。
常见错误是只在工作区 settings.json 里改了,但用户级设置仍是 true,导致右下角显示「Workspace Settings」时你以为关掉了,其实没关。必须同步确认用户级设置也已写入该值。
为什么关了主开关,Ctrl+P 或跳转定义还是斜体
这些路径不走 workbench.editor.enablePreview 的逻辑,而是各自有独立开关:
-
workbench.editor.enablePreviewFromQuickOpen:控制 Ctrl+P 回车后是否预览,需设为false -
workbench.editor.enablePreviewFromCodeNavigation:控制 Ctrl+Click 跳转定义、F12 查引用是否预览,也得关 -
search.editor.doubleClickBehaviour:搜索结果中双击文件,默认是preview,要改成open
注意:Ctrl+Click 在资源管理器里单击文件是硬编码行为,无法通过配置禁用——只能靠双击或改快捷键绑定绕开。
别漏掉 workbench.editor.reuseEditors
即使预览关了,你双击 A 文件 → 再双击 B 文件 → A 标签被替换成 B,这问题不是预览,是复用机制在作怪。默认 workbench.editor.reuseEditors 是 true,它会让 VSCode 把新文件塞进当前空闲编辑器组,不管是不是预览。
设为 false 才能确保每次打开都新建标签页,尤其适合多文件并行编辑场景。但要注意:关掉后,手动关闭某个标签再打开同名文件,也不会自动复用,得右键 → Reopen Closed Editor。
扩展调用的预览 API 得单独查文档
GitLens 的 blame 行点击、Todo Tree 的任务跳转、甚至某些调试器源码定位,都可能绕过所有 VSCode 设置,直接调用预览 API 打开文件。这类行为不会响应 enablePreview 配置。
解决方法只有一个:去对应扩展的 GitHub 页面或设置里搜 preview,看有没有类似 gitlens.preview.* 或 todo-tree.preview 的开关。没有的话,只能换扩展或接受该路径下的预览行为。
真正容易被忽略的是:预览页没有未保存标识(没圆点),改了几行代码切走再回来,内容可能已被覆盖——这不是崩溃,是设计如此。关预览不只是为了“看着顺眼”,而是防止丢改。











