vs code 默认启用预览模式(workbench.editor.enablepreview: true),单击文件仅临时打开,双击/中键/enter才常驻;禁用该设置并配合revealifopen和openpositioning可实现文件永驻且有序。

为什么 VS Code 总是“覆盖”当前文件,而不是新开标签?
这不是 bug,而是预览模式(Preview Mode)在起作用。VS Code 默认开启 workbench.editor.enablePreview,导致单击文件时只临时打开、不常驻——一旦点开另一个文件,前一个就自动关闭。你感觉“只能开一个”,其实是它没被“钉住”。
- 单击文件 → 进入预览态(灰色标签,右上角无关闭 ×)
- 双击文件 / 按
Enter/ 中键点击 → 强制常驻(蓝色标签,有 ×) - 预览态文件被其他操作覆盖(如 Ctrl+P 搜索跳转)时,会立刻消失
如何关掉预览模式,让每个文件都“永远开着”?
最直接有效的办法就是禁用预览:
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Preferences: Open Settings (JSON) - 在打开的
settings.json里加这一行:"workbench.editor.enablePreview": false
- 保存后立即生效,无需重启
也可以走图形界面:
- 点左下角齿轮 → “设置” → 搜索
enablePreview→ 取消勾选Workbench > Editor: Enable Preview
注意:这个设置是用户级的,影响所有工作区;如果某项目想例外,可在该工作区的 .vscode/settings.json 里单独覆盖。
顺手优化:避免标签栏堆满却找不到目标文件
关掉预览只是第一步。若打开几十个文件,标签栏会挤成小细条,反而难定位。建议同步调整两个配套设置:
-
"workbench.editor.revealIfOpen": true:再次点击已打开的文件时,自动跳转到对应标签页(而不是新建一个重复标签) -
"workbench.editor.openPositioning": "right"或"last":新文件默认插在标签栏最右侧,符合直觉浏览顺序
这两个参数不冲突,和 enablePreview: false 搭配后,既能“永驻”,又不会乱序。
容易忽略的细节:双击 ≠ 万能解,中键才是真稳
很多人发现“双击能新开”,于是以为问题解决了——但双击行为其实受鼠标驱动和系统设置干扰(比如触控板双击灵敏度、远程桌面延迟)。更稳定的方式是:
- 鼠标中键点击文件名(资源管理器里)→ 100% 强制常驻,无视预览设置
- 拖拽文件到编辑器区域 → 同样绕过预览逻辑
- 使用
Ctrl+Click(Windows/Linux)或Cmd+Click(macOS)在资源管理器中点击 → 效果等同中键
这些操作底层调用的是 openToSide 或 openInEditor 命令,比 UI 层的单/双击更可靠。
关掉预览后,“永远只开一个编辑器”的错觉就消失了——但真正要达成“每个文件都保留在标签栏、不被挤掉、找得到”,还得靠中键、配置联动和一点肌肉记忆。










