HTML怎么做代码自动补全_html代码编辑器自动补全提示【示例】
vs code html标签补全不生效需检查html.suggest.html5是否为true,emmet失效需确认文件关联和tab触发,自定义标签需配置html.customdata指向json schema。

VS Code 里 HTML 标签补全不生效?检查 html.suggest.html5 是否启用
默认情况下 VS Code 的 HTML 补全是开启的,但如果你装了某些禁用默认语言功能的插件(比如只留 Emmet 的轻量配置),html.suggest.html5 可能被关掉。这个设置直接控制原生标签、属性、全局事件(如 onclick)的提示是否出现。
打开设置(Ctrl+, 或 Cmd+,),搜索 html.suggest.html5,确保它为 true。也可以在 settings.json 中手动加一行:
"html.suggest.html5": true
- 关掉它后,
div、section 这类语义标签不会出现在补全列表里,只剩 Emmet 缩写(如 div→Tab)可用
- 即使启用了,
input 的 type="date" 这类枚举值也不会自动提示——那是 html.suggest.experimental.customHtml5 控制的,目前仍属实验性,且仅部分 VS Code 版本支持
- 别混淆
html.autoClosingTag:它管的是输入 <div> 后自动补 <code>
,和补全提示是两回事
Emmet 补全失效?确认文件关联和触发方式是否匹配
Emmet 是 VS Code 默认 HTML 补全的核心引擎,但它依赖两个前提:当前文件被识别为 html 语言模式,且你用对了触发键。
anything-to-html
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
下载
- 右下角状态栏看语言标识,如果不是
HTML,点它 → 选择 Configure File Association for '.xxx' → 设为 HTML
- Emmet 默认只响应
Tab 键(不是 Enter 或 Space)。输入 ul>li*3 后按 Tab 才会展开;按 Enter 会换行,Space 会插入空格并中断缩写
- 如果写到一半想补全(比如输
nav 想看 <nav></nav>),要先按 Ctrl+Space 唤出补全菜单,再选 Emmet 项——不能只靠 Tab
-
emmet.triggerExpansionOnTab 必须为 true;若设为 false,Tab 就只缩进,Emmet 彻底不工作
自定义属性或 Web Component 标签没提示?靠 html.customData 手动注入
原生 HTML 补全只覆盖标准规范,<my-button size="large"></my-button> 这种自定义元素或属性不会自动出现。必须通过 html.customData 注入 JSON Schema 描述。
新建 html-data.json,内容类似:
{
"version": 1.1,
"tags": [
{
"name": "my-button",
"description": "Custom button component",
"attributes": [
{ "name": "size", "values": ["small", "medium", "large"] }
]
}
]
}
然后在 settings.json 中指向它:
"html.customData": ["./html-data.json"]
- 路径是相对于工作区根目录的,不是相对于
settings.json 文件本身
- JSON Schema 不支持正则或动态值,
size 的可选值必须硬编码列出
- 改完
html-data.json 后需重启 VS Code 或重载窗口(Ctrl+Shift+P → Developer: Reload Window),否则不生效
- 多个自定义数据源可写成数组:
["./html-data.json", "./web-components.json"]
Sublime Text 或 Vim 用户:别指望开箱即用,得配插件+配置
Sublime Text 默认只有基础标签名补全(如输 di 提示 div),无属性、无 Emmet。Vim 更原始,连 <div> 都要手敲。
<ul>
<li>Sublime Text 装 <code>Emmet 插件后,输入 ul>li*3 + Tab 才能展开;补全快捷键是 Ctrl+Space,但默认只列标签,不列属性值
Vim 需同时装 mattn/emmet-vim 和 tpope/vim-haml(后者提供部分 HTML 上下文感知),且要在 .vimrc 加 let g:user_emmet_mode = 'a' 才启用全部功能
这两款编辑器都不解析 customElements.define(),也没 html.customData 机制,想支持自定义标签只能靠手写 snippets 或外部脚本生成补全源
实际项目里最常卡住的,是自定义组件的属性提示——它既不靠 Emmet,也不在默认 HTML 补全范围内,必须手工维护 JSON Schema,而且每次新增属性都要同步更新文件。