emmet在vscode中默认启用,失效主因是语言模式非html、光标位置不当(须在缩写末尾或字母数字后)、emmet.triggerexpansionontab未设为true;需确保右下角显示html、文件已保存为.html、且不在script/style内使用。

Emmet 在 VSCode 里根本不用“开启”——它默认就开着,出问题从来不是因为关了,而是环境没对。
Tab 按了没反应?先盯住这三件事
90% 的“Emmet 不工作”都卡在这三个硬性条件上,缺一不可:
- 右下角状态栏必须显示
HTML(不是Plain Text、JavaScript或Vue);新建未保存文件默认是纯文本,哪怕你写了div.container,按Tab也毫无反应 - 光标必须在缩写末尾或紧贴字母/数字之后,比如
ul>li*3|(|是光标),不能在<div class="|"></div>里,也不能在<script></script>块中 - 设置里
emmet.triggerExpansionOnTab必须为true;如果被插件或自定义配置设成false,Tab就只会插入制表符
HTML 缩写只在 HTML 模式下生效,别指望它跨语言自动识别
VSCode 默认只对 .html 文件和明确设为 HTML 语言模式的文档启用 Emmet。常见踩坑点:
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
-
.vue文件的<template></template>区域:需在settings.json中加"emmet.includeLanguages": {"vue-html": "html"} -
.jsx或.tsx文件:语言模式得是javascriptreact或typescriptreact,再配"emmet.includeLanguages": {"javascriptreact": "html"} -
.md或.txt文件:即使内容全是 HTML,Emmet 也不会启动;想用就得手动切语言模式或改后缀
CSS 缩写 m10 为什么不出 margin: 10px;
CSS Emmet 不补全选择器,只补全属性值,而且有严格位置要求:
- 必须在
.css文件或<style></style>块中,且语言模式为CSS(不是Vue或Less) - 光标必须落在冒号
:后、分号;前,比如margin: |,然后输m10再按Tab -
m10默认输出margin: 10px;,但新版 VSCode 已禁用通用前缀,mt10才是margin-top: 10px;;w100p对应width: 100%;,w100是width: 100px;
! 按 Tab 生成 HTML5 骨架,但只在空行有效
! 是唯一不带字母的 HTML 缩写,但它极其挑剔:
- 必须在完全空白的首行输入,不能前面有空格,也不能写在
<div> 里面 <li>按 <code>Tab后生成...,中文项目记得手动把lang="en"改成lang="zh-CN" -
html:5和html5已废弃,VSCode 当前版本完全不识别,别白费劲
最常被忽略的其实是语言模式切换和 emmet.includeLanguages 的映射关系——它不是“让 Emmet 更强”,而是“告诉 VSCode 这段代码该用哪套规则解析”。配错一个 key,比如把 vue-html 写成 vue,缩写就彻底静音。










