emmet 的 ! 触发需同时满足三个硬性条件:文件已保存为 .html 或 .htm 后缀;右下角语言模式显示为 html(非 plain text 等);光标位于空行开头或文件为空。缺一不可,否则 ! 被视为普通字符且无任何提示。

直接输 !,然后按 Tab 键——不是 Enter,不是空格,不是写在行中,就完事了。
为什么敲 ! 没反应?三个硬性条件缺一不可
Emmet 不是“按了就出”,它只在严格满足以下条件时才触发:
- 文件已保存为
.html或.htm后缀(新建未保存的Untitled-1无效) - 右下角状态栏显示语言模式为
HTML(不是Plain Text、JavaScript或其他) - 光标必须在空行开头,或整个文件为空;若写在
<div> 里、或行中已有文字,<code>!就被当普通字符处理!和html:5到底用哪个?!是当前唯一推荐写法。VS Code 已将html:5标记为废弃:
Article To Html下载文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
- 两者生成内容完全一致:
+ <code>++ -
!更短、容错强;html:5若多一个空格(如html :5),直接失效 - 团队协作中混用会增加新人理解成本,统一用
!最省心
生成后想改
lang="en"或加<meta charset="utf-8">怎么办?别去改 VS Code 源码或插件配置——那不可靠且难维护。正确做法是覆盖默认行为:
-
→ 手动改成(这是最轻量、最可控的方式) -
<meta charset="UTF-8">默认已存在,但位置必须在开头;若缺失,手动补上并确保在<title></title>前 - 如需长期自定义(比如每次都要带
<meta name="viewport">),用 VS Code 用户代码片段:新建html.json,把!绑定到你自己的模板
最容易被忽略的是:Emmet 失败时完全静默——不报错、不提示、不警告。它只是默默把你输的
!当成普通文本。所以只要没出来骨架,先盯住那三个条件:文件后缀、语言模式、光标位置,别猜别的。 - 两者生成内容完全一致:










