VSCode默认启用单击预览模式:单击未打开文件时标签呈斜体、无保存圆点,再点其他文件即被替换;该行为由"workbench.editor.enablePreview": true控制,非bug而是减少标签堆积的设计。

VSCode 默认就是单击预览,不需要额外设置 —— 但很多人误以为“没生效”,其实是配置被覆盖、插件干扰,或根本没理解“预览”的视觉表现。
怎么确认自己正处在预览模式
单击资源管理器里一个未打开的文件(比如 index.ts),观察编辑器顶部标签栏:
如果标签名是斜体、右上角没有圆点(●)、且再次单击另一个文件时它立刻被替换——那就是预览模式在工作。
这不是 bug,是 VSCode 的默认行为,目的是减少标签页堆积。
- 预览标签不会自动保存;关闭前切换到其他文件,内容可能丢失
- 斜体 + 无圆点 = 预览中;常驻标签才有圆点(表示已打开、可编辑、有未保存状态)
- 即使你没动过任何设置,
workbench.editor.enablePreview默认也是true
为什么单击没反应 / 不显示斜体
不是预览失效,而是你触发了非预览路径:
- 单击的是**已经打开的文件** → VSCode 只是把焦点切过去,不生成新标签,也不变斜体
- 启用了
"workbench.editor.revealIfOpen": true(默认值),导致单击已打开文件直接跳转,掩盖了预览逻辑 - 装了 Explorer 增强类插件(如
Project Manager),它们会拦截点击事件并绕过原生预览机制 - 在 macOS 上用了
Cmd+Click→ 这是硬编码的预览行为,不受enablePreview控制,但Ctrl+Click才走标准流程
想让某些文件类型跳过预览(比如 .ts、.json)
别关全局预览,用 workbench.editorAssociations 精准控制。它按文件后缀匹配,优先级从上到下:
"workbench.editorAssociations": [
{
"viewType": "default",
"filenamePattern": "*.ts"
},
{
"viewType": "default",
"filenamePattern": "*.json"
},
{
"viewType": "vscode.markdown.preview.editor",
"filenamePattern": "*.md"
}
]
-
viewType: "default"表示用内置文本编辑器常驻打开(不预览) -
viewType: "vscode.markdown.preview.editor"是 Markdown 预览专用标识,注意中间是英文句点,不是短横线 - 顺序很重要:前面的规则先匹配,
*.md放最后,避免被*通配覆盖
预览相关的隐藏开关有哪些
只关 workbench.editor.enablePreview 不够,这些细粒度开关也得看:
-
workbench.editor.enablePreviewFromQuickOpen:控制Ctrl+P搜索后回车是否预览(默认true) -
workbench.editor.enablePreviewFromExplorer:虽已废弃,但旧扩展可能还在读它;若存在,建议设为false -
workbench.editor.enablePreviewFromCodeNavigation:控制Ctrl+Click跳转定义是否预览(需手动添加) -
search.editor.doubleClickBehaviour:搜索结果里双击,默认是"preview",可改为"open"避免预览
真正容易被忽略的是:这些设置一旦写进 settings.json,必须确保没被工作区配置(Workspace Settings)覆盖——右下角显示 “Workspace” 时,用户级设置就不起作用了。











