VSCode HTML 快速补全依赖 Emmet、内置语言服务和插件协同;li*3 Tab 展开由 Emmet 实现,需确保 "emmet.triggerExpansionOnTab": true 且 "emmet.showExpandedAbbreviation": "inMarkupAndStylesheetFiles"。

VSCode 的 HTML 快速自动补全不是靠“开一个开关”就能搞定的,而是由 Emmet、内置 HTML 语言服务、插件三者协同驱动;关掉任意一环, VSCode 的 HTML 标签补全(比如输入 VSCode 1.84+ 内置了 VSCode 自带的 HTML 补全对 真正卡住效率的,往往不是“没装插件”,而是 。
确认 Emmet 是补全主力,不是辅助
ul>li*3 按 Tab 生成列表)本质是 Emmet 在工作,不是 HTML 语言服务器在解析 AST。它快、轻、不依赖网络或模型,但容易被误关。
"emmet.triggerExpansionOnTab" 必须为 true:关掉后按 Tab 什么都不会展开,包括 div →
"emmet.showExpandedAbbreviation" 别设成 "never":这是最常踩的坑——设为 "inMarkupAndStylesheetFiles" 才能在写 .vue 或 .svelte 文件中失效,需加配置:"emmet.includeLanguages": {"vue-html": "html", "svelte": "html"}
html.autoClosingTag 和 Auto Close Tag 别共存
html.autoClosingTag,它和 Auto Close Tag 插件逻辑重叠,同时启用会导致后者静默失效——你装了插件却感觉“没反应”,大概率是这个原因。
"html.autoClosingTag": false,再确保 "auto-close-tag.enableAutoCloseTag": true
<script></script>/ 闭合,也不处理 Vue 单文件组件的 块 被删了一行,匹配就断了改标签名时同步更新闭合标签,关键在“怎么选中”
Auto Rename Tag 不靠 AST,只做文本匹配。它失败不是因为插件坏了,而是你没给它可识别的上下文。
Ctrl+Shift+Right 选中完整标签名(如整个 div),不能只改 i —— 否则它找不到原标签边界 div> 或
),要加配置:"auto-rename-tag.ignoreCase": true
class 属性里补项目 CSS 类名?原生不支持,得配插件路径
class="" 里填什么完全无感——它不读你的 CSS 文件。想让 class="|" 弹出真实类名,必须靠插件并明确告诉它去哪找。
IntelliSense for CSS class names in HTML(注意名字带 in HTML)./src/**/*.css 和 ./src/**/*.scss;如果你的样式在 assets/styles/ 下,就得加:"css.styleSheets": ["assets/styles/*.css"]
@apply、CSS-in-JS、tw 类函数完全无效,应换用 Tailwind CSS IntelliSense
emmet.showExpandedAbbreviation 被设成 never、Auto Close Tag 和内置功能打架、或者 Auto Rename Tag 匹配时因一个空格失败——这些细节不排查,装十个插件也没用。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











