Emmet Tab失效主因是右下角语法未设为HTML/CSS且光标不在行尾:Plain text模式下不响应,需手动切换语法并确保光标后无空格或字符。

Tab没反应?先看右下角语法标签和光标位置
Emmet 在 Atom 中不是“装上就灵”,Tab 键不生效,90% 是因为当前文件没被识别为支持语法,或光标卡在错误位置。
- 右下角显示
Plain text时,div.container按Tab一定没反应;必须手动点它 → 选HTML或CSS(快捷键:Ctrl+Shift+L/Cmd+Shift+L) - 光标后面有空格、换行符、或紧贴其他字符(如
foo<div.container>),<code>Tab会缩进而非展开 - 写在
<script></script>块里、JS 字符串中、注释内,Emmet 直接静默忽略——它只认语法上下文,不猜意图
jsx/vue 文件里用 Emmet,光装插件不够
默认情况下,.jsx 和 .vue 文件不会触发 Emmet,不是插件问题,是作用域没配。
- 进
Atom → Preferences → Packages → emmet → Settings,找到Extensions输入框,填:jsx: jsx, vue: html - 仅配置扩展名还不够:Atom 默认不把
Tab绑定到.jsx或.vue语法域,需手动改keymap.cson - 打开
Atom → Keymap…,追加这两行(别覆盖原内容):'.source.js, .source.jsx': 'tab': 'emmet:expand-abbreviation'<br>'.source.vue': 'tab': 'emmet:expand-abbreviation'
- 改完保存,已打开的文件要重新切换一次语法模式(比如切到
Plain text再切回Vue Component)才生效
CSS 缩写 m10、dib 为什么只在 .css 里管用?
CSS 缩写不是“写哪儿都生效”,它严格限定在声明值位置(冒号后)且语法必须是 CSS。
-
m10必须出现在.css文件里,或<style></style>块内部,并且光标得在冒号右边(如margin: m10|,|是光标) - 在
.html文件里直接写m10不会触发——哪怕你把它塞进<style></style>标签,也得确保 Atom 把那一块识别为source.css,而不是text.html.basic -
bd1-s展开为border: 1px solid #000;,颜色固定为黑;想改默认色,得在~/.emmet/emmet-user-config.json里加:"variables": {"color": "#333"}
自定义缩写不生效?路径和作用域写错就白配
自定义缩写靠 snippets.json,但 Atom 对文件位置和 JSON 结构极其敏感,错一个字符就失效。
- 文件必须放在
~/.atom/snippets.json(macOS/Linux)或%USERPROFILE%\.atom\snippets.json(Windows),不能放错目录,也不能叫snippets.cson - 顶层 key 是作用域名,不是文件后缀:
"source.html"对应 HTML 文件,"source.css"对应 CSS,"source.js"才能用于 JSX 中的模板字符串 - 缩写值里用
$1、$2定义跳转位,但${1:default}才带默认值;写成$1:default就只是字面量 - 改完
snippets.json后,已打开的文件需手动重载语法(切换语言再切回),否则缓存不刷新
Tab 就只是 Tab。

















