vscode默认单击替换是预览模式设计:启用workbench.editor.enablepreview时单击打开斜体预览标签并可被覆盖;启用workbench.editor.reuseeditors时双击/回车也复用当前标签页;两者均为true即表现为“总是替换”;关闭前者使单击常驻,关闭后者使所有打开操作均新开标签。

VSCode 默认的「预览标签」行为不是 bug,而是明确设计:单击资源管理器文件 → 打开斜体标签 → 再点另一个文件 → 当前预览被替换。你要的“自动替换”,其实它本来就在这么做;真正需要调整的,是「要不要预览」以及「替换逻辑是否复用当前编辑器」。
为什么单击文件总在替换,双击却新开标签
这是 workbench.editor.enablePreview 和 workbench.editor.reuseEditors 两个配置共同作用的结果:
-
enablePreview: true(默认)→ 单击 = 预览模式,斜体 + 可被后续单击覆盖 -
reuseEditors: true(默认)→ 双击/回车/确认打开 = 复用当前活动编辑器,不新开标签(哪怕已关预览) - 两者都为
true时,就表现为:单击替换、双击也替换——这才是你看到的“自动替换”
如果你希望「双击也强制新开」,必须设 "workbench.editor.reuseEditors": false;而如果只想让单击就新开(即关闭预览),只需关 enablePreview。
关闭预览后还是被替换?检查 reuseEditors
很多人关了 workbench.editor.enablePreview,却发现双击同名文件仍覆盖——问题出在 reuseEditors 没动。它独立控制「编辑器复用策略」,和预览无关。
- 设
"workbench.editor.reuseEditors": false后,所有打开操作(双击、Ctrl+P 选中、拖入文件)都会新开标签 - 该配置对已打开的标签页无效,只影响后续操作
- 若同时设了
enablePreview: false和reuseEditors: false,就彻底告别覆盖,每次都是新 tab - 注意:
reuseEditors在工作区 settings.json 中的值会覆盖用户级设置
预览标签右下角显示「预览」字样,但没提示怎么固定
VSCode 不会在 UI 上直接标注“点这里固定”,但有三个可靠方式让它常驻:
- 右键预览标签 → 选
Keep Open(最直接) - 按
Enter键(焦点在预览标签上时) - 双击该预览标签本身(不是资源管理器里的文件)
固定后标签变正体,不再被任何单击或双击替换;但 Ctrl+W 仍可关闭它——VSCode 没有“不可关闭”的标签页概念,固定 ≠ 锁定。
多行标签换行和预览替换是两件事,别混着调
workbench.editor.wrapTabs 只控制标签栏是否折行显示,和是否被替换完全无关。它从 VSCode 1.84 才原生支持,且:
- 设成
true后,只是把一堆标签“堆高”,不会改变打开逻辑 - 若标签数超过
workbench.editor.limit.value(默认 10),多余标签会被隐藏而非换行 - 用了 Custom CSS 插件强行换行,可能让
Keep Open右键菜单错位或悬停提示失效
真正影响“是否替换”的只有 enablePreview 和 reuseEditors 这两个布尔开关——其余所有设置,包括多行、颜色、字体,都不参与这个决策链。











