VSCode中预览与固定是独立机制:关闭预览(enablePreview: false)才能使固定生效;固定仅防覆盖和批量关闭,不防Ctrl+W、中键点击或重启丢失。

VSCode 的“预览”和“固定”是两套独立机制,不关掉预览,固定就形同虚设;不理解固定只防覆盖、不防关闭,就会反复踩坑。
为什么单击文件总在同一个标签页里跳来跳去
这是 workbench.editor.enablePreview 在起作用:默认开启时,资源管理器里单击任意文件,都会以斜体预览标签打开——它不是真正的新标签,而是一个临时占位符,后续任何单击都会复用并替换它。
- 预览标签不会出现在
Ctrl+Tab切换列表里 - 右下角状态栏会显示“预览”字样(部分主题可能不明显)
- 双击该预览标签,或按
Ctrl+K Enter,它会立刻转为常驻标签(字体变正、左侧出现图钉) - 已存在的预览标签,即使你改了设置,也不会自动转正,必须手动操作一次
怎么让每次点击都新开一个常驻标签页
核心是关掉全局预览开关,而不是依赖“固定”:
- 打开
settings.json(命令面板输入Preferences: Open Settings (JSON)) - 添加这一行:
"workbench.editor.enablePreview": false - 保存后无需重启,立即生效;已有的斜体标签会在下次焦点切换或保存后自动转正
- 若仍看到斜体标签,检查是否漏了其他入口的预览控制:
workbench.editor.enablePreviewFromQuickOpen、workbench.editor.enablePreviewFromCodeNavigation也建议设为false
固定标签页到底能防什么、不能防什么
右键标签页选 Keep Open(或点左侧图钉图标),只是让该标签脱离预览生命周期策略,不是加锁:
- ✅ 防被新文件覆盖(比如再点资源管理器里别的文件)
- ✅ 防被
Close All Other Editors清掉 - ❌ 不防
Ctrl+W(当前焦点编辑器强制关闭) - ❌ 不防鼠标中键点击标签页(VSCode 默认绑定为关闭)
- ❌ 不防双击标签页空白处(UI 层直接触发关闭)
- ❌ 不持久:重启 VSCode 后全部丢失,固定状态不保存
想减少误关,但又不想全关预览怎么办
精细控制比一刀切更实用,尤其适合需要快速浏览日志、配置等轻量文件的场景:
- 保留全局预览:
"workbench.editor.enablePreview": true - 仅禁用资源管理器单击预览:
"workbench.editor.enablePreviewFromExplorer": false - 禁用搜索结果双击预览:
"search.editor.doubleClickBehaviour": "open" - 对特定类型文件禁用预览(如所有
.ts文件):"workbench.editorAssociations": [{"pattern": "*.ts", "viewType": "default" }](注意:这不是files.associations)
真正容易被忽略的是:编辑器组(split view)本身有独立的预览策略,拖拽文件到另一个组、或用 Alt+Click 打开侧边视图时,仍可能触发预览行为——这跟设置无关,是 editorGroup 的底层逻辑。











