根本原因是编辑器未识别html上下文:状态栏显示plain text/javascript/xml而非html,需点击右下角配置文件关联为html;文件后缀非.html、在script内/字符串/注释中、输入法劫持tab键、vs code中emmet.showexpandedabbreviation设为"never"等均会禁用补全。

补全功能不是浏览器行为,而是编辑器特性;不启用对应语言模式或插件, 仅靠默认配置不够,尤其装了 Prettier、Auto Close Tag 等插件后容易覆盖原始行为: 这些都得写进 它有两种机制共存,但互斥:原生 很多人抱怨“补全完还得手动跳到 真正容易被忽略的是:补全效果高度依赖当前作用域(是否在 <di>输完永远不弹<code><div>。
<h3>为什么输入 <code><di> 后没出现 <code><div> 提示?
<p>根本原因不是“功能坏了”,而是编辑器没识别成 HTML 上下文:</p>
<ul>
<li>右下角状态栏显示的是 <code>Plain Text、JavaScript 或 XML,而非 HTML —— 点击它,选 Configure File Association for '.html' → 设为 HTML
.html(比如是 .txt、.vue 或无后缀),Emmet 和原生补全均不激活<script></script> 标签内部、字符串字面量里(如 let s = "<div>)或注释中输入 <code>,补全被主动禁用
<li>某些输入法(如搜狗、微软拼音)会劫持 <code>Tab 键,导致 Emmet 缩写无法展开 —— 切英文输入法再试
VS Code 中必须确认的三项设置
"html.suggest.html5": true —— 关掉后,<main></main>、<section></section> 这类语义标签不会出现在提示列表中"emmet.triggerExpansionOnTab": true —— 关掉后,ul>li*3 按 Tab 不展开,连带影响 <di> 的初始提示</di>
"emmet.showExpandedAbbreviation": "inMarkupAndStylesheetFiles" —— 若设为 "never",<di> 输完直接静音,这是最常被误设的坑</di>
settings.json,不能只依赖 UI 勾选(UI 有时不同步)。
Sublime Text 闭合逻辑与冲突点auto_close_tag 和插件 Emmet,选错就补全错乱:
<p></p> 回车 → <p></p>):启用 "auto_close_tags": true,并确保没装 Emmet 或已禁用nav>ul>li*3)、嵌套结构、属性预置:必须关掉原生闭合("auto_close_tags": false),只用 Emmet<img>、<input> 永远不补尾标签 —— 这是规范行为,不是 bugdiv 回车变成 <div class=""></div>?这不是设置能开的开关,得写 .sublime-snippet 文件补全后光标停在哪,其实由你控制
class 引号里”,是因为没改 snippet 行为。Emmet 默认把光标放在标签内容区(<div>|</div>),但你可以强制它落到属性值内:
emmet.variables,加 "_cssProperty": "class" 类似字段(需配合自定义 snippet)divc.sublime-snippet,内容用 ${1:container} 定义 tab stop,${0} 放光标出口Ctrl+Space(Win/Linux)或 Cmd+Space(macOS)唤出完整建议列表,用方向键选中带 class 的变体<template></template> 内、是否在 JS 字符串中)、语言服务器是否就绪(CSS/JS 插件未启动时,class="" 里不提示类名),以及——你有没有在敲错语法时,还指望编辑器猜出你要什么。











