VSCode HTML自动补全失效主因是语言模式非HTML、html.suggest.html5为false、Emmet触发未启用;需确认右下角为HTML模式,设置"html.suggest.html5": true,并开启emmet.triggerExpansionOnTab。

VSCode 的 HTML 自动补全不是“坏了”,而是被几个关键开关或语言识别状态悄悄关掉了。恢复它不需要重装、不靠玄学重启,只用检查三处配置和一个状态栏标识。
右下角语言模式是不是 HTML?
这是 90% 补全失效的根源。VSCode 不看文件名后缀是否为 这个设置控制原生 HTML5 标签( Emmet 是 VSCode HTML 补全的主力引擎,但它只响应 这不是补全“失效”,而是 VSCode 原生 HTML 语言服务对属性值语义的感知有限。它默认只补标签和基础属性, 最常被忽略的一点:补全行为受语言模式、.html,只认右下角状态栏显示的语言 ID。如果显示的是 Plain Text、PHP、Markdown 或空着,HTML 语言服务根本没加载,补全菜单里连
Configure File Association for '.xxx' → 设为 HTML
Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS),输入 Change Language Mode,回车后选 HTML
test.html,此时状态栏通常会自动切为 HTML
html.suggest.html5 是否为 true?、)、全局属性(contenteditable)、事件(oninput)以及 input 的 type 枚举值(email、date 等)是否出现在补全列表里。它默认开启,但容易被插件或手动修改关掉。
Ctrl+,),搜索 html.suggest.html5,确认开关是开启状态settings.json(命令面板输入 Preferences: Open Settings (JSON)),确保有这一行:"html.suggest.html5": true
"html.suggest.experimental.customHtml5": true(部分 VS Code 版本支持,用于增强枚举值补全)Emmet 的 Tab 触发是否启用?
Tab 键(不是 Enter 或空格),且必须绑定到当前语言模式。输 ul>li*3 按 Tab 没反应?大概率是这个开关被关了,或 Emmet 没绑定到当前文件类型。
emmet.triggerExpansionOnTab,确保为 true
.md 或 .vue 文件里写 HTML 片段,需额外配置:"emmet.includeLanguages": {"markdown": "html", "vue": "html"}
Tab;临时禁用 Vim 扩展测试,或改用 Ctrl+Enter 触发 Emmet(需在键盘快捷键中查 Emmet: Expand Abbreviation 绑定)为什么
input type="|" 不提示枚举值?type、autocomplete、inputmode 这类强约束枚举值需要明确启用上下文感知,且依赖语言服务未被降级。
html.suggest.html5 已开启(上一点已覆盖)),必须配 html.customData 指向 JSON Schema,原生不支持html.suggest.html5、emmet.triggerExpansionOnTab 三者共同约束,缺一不可。单独调一个设置,往往看起来“好像好了”,实则换种写法(比如在注释里写 HTML、在 JSX 中写 div)又失效——得同步确认这三项都稳住,才算是真正恢复。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











