答案是:直接在 .html 文件中输入 ! 后按 tab 即可生成标准 html5 模板,前提是文件语言模式必须为 html、后缀为 .html,且 emmet.triggerexpansionontab 已启用;否则需手动切换语言模式或改用 html:5。

直接在 .html 文件里输入 ! 再按 Tab,就能生成标准 HTML5 模板——这是最稳、最快、也最容易被忽略前提的方式。
为什么 ! + Tab 有时不生效
不是 Emmet 坏了,而是 VSCode 没认出这是 HTML 文件。常见原因:
- 文件没保存,或扩展名不是
.html(比如叫index.txt) - 文件已打开但右下角语言模式显示为
Plain Text,不是HTML - 手动改过设置,禁用了 HTML 的 Emmet 支持(比如误设了
"emerald.enableEmmetForHtml": false)
解决方法:按 Ctrl+Shift+P(Win/Linux)或 Cmd+Shift+P(Mac),输入 Change Language Mode,选 HTML;或者点击右下角语言标识手动切换。
! 和 html:5 有啥区别
两者效果完全一样,都生成标准 HTML5 骨架,但行为细节不同:
-
!是 Emmet 的“文档模板缩写”,触发快、字符少,适合日常新建 -
html:5更明确表达意图,适合教学或团队规范场景;某些旧版插件或自定义配置里可能只识别它 - 都不依赖网络或插件,VSCode 默认自带支持
注意:html:5 后必须按 Tab,不能用 Enter(部分版本 Enter 会换行而非展开)。
自定义模板时,prefix 和 body 怎么配才可靠
写进 html.json 的代码片段,容易因引号、缩进或变量占位符出错:
-
prefix必须是纯英文+数字,比如myhtml可以,我的模板不行 -
body是字符串数组,每行一个字符串;双引号内要用反斜杠转义,比如"<meta charset='\"UTF-8\"'>" -
$0表示最终光标位置,$1、$2用于多处跳转,别漏掉或写错序号 - 如果模板含
script或style标签,确保闭合正确,否则插入后可能破坏语法高亮
例如,想让标题可编辑,把 "<title>$1</title>" 放进 body,按 Tab 后光标会自动跳到 title 内容处。
真正卡住人的往往不是怎么写,而是文件没切对语言模式、或者保存前就急着敲 !——Emmet 只在 .html 文件且语言模式为 HTML 时才响应。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











