关闭workbench.editor.enablePreview设为false即可禁用预览模式,单击文件变为常驻标签页、斜体消失;该设置无需重启,已打开的斜体标签自动转为正体常驻,但需同步用户级设置并排查Ctrl+P、跳转定义等绕过主开关的预览行为。

VSCode 没有“预览模式开关”这个按钮,切换本质是控制标签页生命周期:单击触发预览(斜体、可被覆盖),双击强制常驻(正体、带 ×),而所谓“锁定”必须在常驻状态下操作才真正有效。
为什么单击文件总是一闪就消失?
这是 workbench.editor.enablePreview 为 true 时的默认行为——它不是 bug,而是 VSCode 的预览态机制:临时占位、无保存标识、第三个文件打开时自动回收。斜体标签页本身就不算“已打开”,所以 Ctrl+Tab 切不到、Ctrl+1~Ctrl+9 也跳不过去。
- 双击资源管理器中的文件,一定进常驻模式(无论设置如何)
- 单击 +
Ctrl+Click(Windows/Linux)或Cmd+Click(macOS)会强制预览,该行为无法通过设置禁用 - 已存在的斜体标签页,右键 →
Keep Open只延长其寿命,不改变其预览属性;它仍可能被第三个文件顶掉
双击标签页空白处 ≠ 锁定,只是固定当前编辑器
双击标签页右侧空白区(靠近关闭 × 的位置),会触发 Keep Open,左侧出现图钉图标。但这仅表示“不被 Close All Other Editors 清掉”和“不被同路径新打开覆盖”,不防以下操作:
- 鼠标中键点击标签页 → 强制关闭,无视图钉
- 双击标签页空白处(再次)→ 关闭当前标签,同样无视图钉
- 从大纲/引用/搜索结果点文件 → 若
workbench.editor.revealIfOpen为true(默认),直接跳转激活,绕过图钉 - 拖入外部文件或使用
File: Open Recent→ 默认复用逻辑仍生效
真要稳定防覆盖,三步配置缺一不可
只靠 UI 点击图钉或双击标签页,无法持久防覆盖。必须改 settings.json,且三项联动:
-
"workbench.editor.enablePreview": false—— 所有单击都开常驻标签,斜体消失 -
"workbench.editor.reuseEditors": false—— 阻止双击/跳转时强行复用已有标签 -
"workbench.editor.revealIfOpen": false—— 否则从大纲、引用、搜索结果点文件仍会绕过图钉跳转过去
改完执行 Ctrl+Shift+P → Developer: Reload Window 生效。注意:已存在的预览标签不会自动转正,需手动右键 → Keep Open 一次。
容易被忽略的关键细节
很多人以为“点了图钉就锁死了”,结果发现新开文件还是挤掉了旧的——根本原因是没分清“固定”和“退出预览模式”的区别。VSCode 的标签页状态由三层决定:是否预览、是否固定、是否属于被锁定的编辑器组。这三者互相影响,但只有常驻态(非斜体、带 ×)的标签页,固定操作才有实际意义。另外,workbench.editor.reuseEditors 和 workbench.editor.revealIfOpen 这两个配置在远程开发(如 Remote-SSH)中可能被重置,断连重连后需重新检查。











