先确认语言模式为HTML且"html.autoClosingTag":true;右下角非HTML或该配置为false是失效主因,.vue/.jsx因语言ID不同原生不生效,Emmet/Prettier可能劫持>键。

输入 后敲 > 不自动补 ?先确认语言模式和基础开关
VSCode 默认就支持 HTML 标签自动闭合,但前提是:当前文件被识别为 html 语言模式,且 html.autoClosingTag 没被关掉。
常见失效现象: Emmet 默认开启 输入 最易被忽略的一点:语言模式错误和设置冲突往往藏在工作区 > 没反应,光标停在末尾;右下角状态栏显示的是 Plain Text 或 Auto 而不是 HTML。
Configure Language Specific Settings → 确保设为 HTML
Ctrl+Shift+P 运行 Preferences: Open Settings (JSON),检查是否有 "html.autoClosingTag": false,有则删掉或改为 true
autoClosingBrackets——那是管 {} 和引号的,跟 HTML 标签无关在 .vue 或 .jsx 文件里
html.autoClosingTag 只对 html 语言 ID 生效。在 .vue 文件的 区域,语言模式是 vue-html;在 .jsx 中是 javascriptreact —— 它们不继承原生 HTML 的闭合逻辑。
.vue 文件:装 Volar(非 Vetur),它提供独立的模板标签闭合支持.jsx / .tsx:原生不支持 自动配对;可启用 Emmet 映射:
"emmet.includeLanguages": { "javascriptreact": "html" }
"[vue-html]": { "html.autoClosingTag": true } —— 这个配置项不支持语言块写法,只认全局装了 Emmet 或 Prettier 就不闭合?检查它们是否劫持了
> 键emmet.triggerExpansionOnTab,但它也可能响应 > 键,从而压制 VSCode 原生的标签闭合行为。Prettier 插件则可能直接禁用原生 HTML 补全。
div 后按 Tab,如果展开成 ,说明 Emmet 在接管,可能同时屏蔽了 > 闭合settings.json 中加 "emmet.triggerExpansionOnTab": false,并确保 "html.autoClosingTag": true
prettier-vscode,加 "prettier.disableLanguages": ["html"] 避免它覆盖原生行为想让
type="|" 弹出 text/email 等选项?那是属性值枚举补全,不是括号问题 后没下拉菜单,不是括号补全失效,而是 VSCode 原生 HTML 语言服务默认不解析 type 这类语义化枚举属性——它把整个 type="xxx" 当作自由字符串处理。
html.suggest.html5(仅控制是否提示 HTML5 标签)和外部 Schema 支持type、autocomplete、loading 等字段的枚举补全,得引入自定义 html.customData,指向 W3C 或社区维护的 JSON Schemaeditor.autoClosingBrackets 或 html.autoClosingTag 解决这个问题——它们根本不参与属性值语义分析.vscode/settings.json 里,GUI 设置界面看不到;而 html.autoClosingTag 的生效与否,完全不依赖任何插件是否启用,只取决于语言 ID 和该配置项是否存在且为 true。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











