最直接的方法是右键标签页选择“keep open”;预览模式下单击文件仅临时显示斜体标签,右键“keep open”可使其脱离预览态并持久保留,ctrl/cmd+单击或双击亦可绕过预览。

点击标签页右键选“Keep Open”最直接
VS Code 的预览模式(Preview Mode)本质是:单击文件时不真正打开,只在标签栏临时显示一个带斜体字的标签,再点其他文件它就自动关闭。很多人误以为是 bug,其实是默认行为。
最稳妥的关闭方式不是改设置,而是养成右键点击标签页 → 选择 Keep Open。一旦标记为“已保留”,该标签就脱离预览状态,不会被后续单击覆盖。
- 快捷键
Ctrl+Click(Windows/Linux)或Cmd+Click(macOS)也能强制以非预览方式打开文件 -
Keep Open对当前会话有效;重启后新打开的文件仍走预览逻辑,除非你改掉默认行为 - 右键菜单里没有
Keep Open?说明你还没单击过该文件——只有处于预览态的标签才支持这个操作
禁用预览模式需修改 workbench.editor.enablePreview
如果希望彻底关掉预览逻辑,直接改设置项:
打开设置(Ctrl+,),搜索 workbench.editor.enablePreview,把勾去掉;或者在 settings.json 里加一行:
"workbench.editor.enablePreview": false
这个开关影响所有编辑器组(包括侧边栏、终端面板里的编辑器实例)。
- 设为
false后,所有单击都等效于Ctrl+Click,不再有预览态标签 - 但注意:某些扩展(如 GitLens、Todo Tree)内部跳转仍可能触发预览逻辑,这是它们自己调用
vscode.openTextDocument()时未传preserveFocus: true参数导致的,和主设置无关 - 如果你常用多标签对比(比如同时看 .ts 和 .spec.ts),关掉预览后标签数会明显增多,建议搭配
workbench.editor.revealIfOpen一起设为true,避免重复打开同一文件
为什么双击能绕过预览但单击不能?
这是 VS Code 的交互设计分层:单击 = 快速浏览(preview),双击 = 明确意图打开(open)。底层调用的是不同 API:
- 单击触发
editor.action.openResource命令,默认启用预览 - 双击触发
editor.action.openResourceInNewEditor,跳过预览流程 - 拖拽文件进编辑器区域、通过命令面板
File: Open File...打开,也属于“明确打开”,不进预览态
所以别纠结“怎么让单击变双击效果”,直接用双击,或按住 Ctrl/Cmd 单击,是最轻量的日常解法。
预览模式残留问题:标签没关但内容消失了
有时你看到标签还在,但编辑区空白、右侧显示“No content to display”,这是预览标签被后台释放了文档句柄,但 UI 没及时刷新。典型触发场景:
- 快速连续单击多个小文件(尤其 Markdown 或 JSON)
- 在资源管理器中用方向键高亮 +
Enter打开文件 - 通过
Search: Find in Files结果列表点击跳转
此时右键标签选 Reopen Editor 可恢复内容;更彻底的预防方式是把 workbench.editor.closeOnFileDelete 设为 false,避免文件被外部工具修改/删除后引发预览态崩溃。
真正麻烦的不是预览本身,而是它和编辑器生命周期、文件监听、扩展激活时机耦合太深——关掉它省心,但留着它配合 Keep Open 手动控制,反而更贴合高频切换场景。











