是,右下角语言模式必须为HTML,否则VSCode不启用HTML语言服务,导致标签补全、自动闭合、Emmet展开等功能全部失效;需点击状态栏手动切换为HTML,或通过快捷键Change Language Mode设置。

右下角语言模式是不是HTML?
这是90%失效问题的根源。VSCode只在语言模式为 检查方式:看窗口右下角状态栏显示的文字。如果不是 Emmet缩写(如 验证方法:新建一个 这个开关控制语义化标签是否出现在补全列表里。 它不控制属性值补全(比如 这不是VSCode原生HTML语言服务的功能。它把 要实现这类语义补全,得靠额外插件(如A11y Linter支持
复杂点往往藏在叠加态里:比如Vue项目同时启用了Volar和旧版Emmet配置,html时启用原生HTML语言服务,其他模式(如Plain Text、JavaScript、PHP)下,HTML,点击它,选择Change Language Mode → HTML;或按Ctrl+Shift+P(Windows/Linux)/Cmd+Shift+P(macOS),输入Change Language Mode回车后选HTML。
.html或.htm,大概率不会自动识别为HTML模式Plain Text,必须手动切换.vue或.jsx里写HTML,需靠插件(如Volar)或files.associations显式映射emmet.triggerExpansionOnTab关没关?
div.container按Tab展开)依赖这个开关。它常被工作区settings.json覆盖,尤其团队项目中可能被CI脚本或prettier配置误设为false。test.html,输入! + Tab,能生成完整HTML5模板就说明Emmet本身正常;如果不行,优先查这个设置。
emmet trigger,确认Emmet: Trigger Expansion On Tab已勾选settings.json,确保有"emmet.triggerExpansionOnTab": true
.md或.py注释里写HTML,还需配"emmet.includeLanguages": {"markdown": "html"}
Tab被Vim等插件劫持时,可临时用Ctrl+Enter触发Emmet展开
html.suggest.html5开了没?
、、这些HTML5新增标签,只有html.suggest.html5为true才提示;关掉后仍能补全
等基础标签,但会漏掉所有新元素。type="|"里的枚举),也不影响class=""里CSS类名提示——那是另一套机制。
html.suggest.html5,确保开启settings.json项:"html.suggest.html5": true
.vue文件无效,除非Volar已启用且配置了volar.autoInsertEmmetSupport
引号里输
type="t为什么不提示text?type="text"当作纯字符串处理,不解析W3C规范中的合法取值范围。所以光标在引号内时,不会弹出text/email/date等选项——这不是Bug,是设计取舍。aria-hidden="|"提示true/false)或语言服务器接管(如Volar对Vue中type的增强)。原生HTML服务只做基础语法层补全。
class、id、部分ARIA属性(需html.suggest.html5开启)autocomplete、inputmode、formmethod等专用属性值,VSCode默认不感知IntelliSense for CSS class names in HTML或Tailwind CSS IntelliSense
editor.quickSuggestions开关能打开这个能力——它管的是“要不要弹框”,不是“框里有什么”emmet.includeLanguages可能被忽略,而volar.autoImportCompletion又接管了补全入口。此时单改某一项设置,效果会被另一层覆盖。动手前,先确认当前文件右下角的语言ID是什么,再决定该调哪一层配置。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











