notepad++的html属性补全完全依赖%appdata%\notepad++\autocompletion\html.xml静态配置,不解析语法、不智能推导,仅按标签名精确匹配keyword节点;修改后须重启生效,路径错误、xml格式错误或大小写不符均导致补全失效。

Notepad++ 的 HTML 属性补全靠的是 Auto-Completion XML 文件,不是插件也不是智能分析
Notepad++ 本身不解析 HTML 语法,也不动态推导合法属性——它只是按预设的 XML 规则,在你输入 <div> 后触发一个静态词表匹配。补全内容完全取决于 <code>html.xml 这个文件里怎么写的,改错位置、漏写标签或属性名大小写不一致,补全就直接失效。
常见错误现象:<a> 后按 Ctrl+Space 没反应;<code><input> 补全不出 <code>type 或 required;补全项里混着过时属性(比如 align)。
- 配置路径在
%APPDATA%\Notepad++\autoCompletion\html.xml(Win10/11),不是安装目录下的那个 - 修改前务必备份原文件,Notepad++ 不校验 XML 格式,写错一个
就导致整个补全功能静默失效 - 属性必须写在对应标签的
<key name="xxx"></key>节点下,且name值要和实际 HTML 中拼写完全一致(比如contenteditable不能写成contentEditable) - 新增属性后需重启 Notepad++,热重载不生效
如何手动添加 input 的 min、max、step 等现代属性
默认 html.xml 里 <input> 节点往往只包含老式属性(type、name、value),min/max 这类 HTML5 属性得自己加。关键是节点层级不能错:必须嵌在 <key name="input"></key> 下的 <keyword></keyword> 列表里,且每个 <keyword></keyword> 只能有一个 name 属性。
正确写法示例(插入到 <key name="input"></key> 内部):
<keyword name="min"></keyword><keyword name="max"></keyword><keyword name="step"></keyword><keyword name="required"></keyword>
- 不要加
value或desc属性,Notepad++ 的 auto-completion 不读这些 - 顺序无关,但建议按字母排,方便后续维护
- 如果想让
required在所有布尔属性(如disabled、checked)后统一出现,得手动调整它们在 XML 中的位置
为什么 <div contenteditable> 补全不了,但 <code><span contenteditable></span> 可以
因为 contenteditable 属性在默认 html.xml 中只被挂到了 <key name="span"></key> 和几个特定标签下(如 blockquote、pre),而 <div> 节点里没写这一行。HTML 规范允许 <code>contenteditable 用在任何元素上,但 Notepad++ 不管规范,只认 XML 配置。
- 解决方法:找到
<key name="div"></key>节点,在其<keyword></keyword>列表里补上<keyword name="contenteditable"></keyword> - 别试图用通配符或全局声明,Notepad++ 不支持;每个标签都要单独列
- 注意大小写:HTML 属性名全小写,
ContentEditable或CONTENTEDITABLE都不会被识别 - 补完后测试时,确保光标停在
<div> 的空格后,再按 Ctrl+Space —— 输入 <code>c再触发补全也行,但首字母必须匹配补全触发时机和快捷键容易被忽略的细节
很多人以为打完
<input> 就该出菜单,其实 Notepad++ 默认只在「空白字符后 + Ctrl+Space」或「输入前两个字母后自动弹」两种情况触发,且后者受设置开关控制。如果你关了自动弹出,又没手动按快捷键,就永远看不到补全。- 检查是否启用自动触发:菜单栏
Settings → Preferences → Backup/Auto-completion → [x] Auto-completion → [x] Enable auto-completion - “自动弹出”默认只对前两个字母生效,比如输
ty就弹type,但输t不会——这不是 bug,是设计如此 - Ctrl+Space 是唯一强制唤出方式,但前提是光标必须在开始标签内、且前面有空格(
<img src="</code"> 后面没空格,补全就不启动) - 补全列表不区分属性和值,
type是属性,text是它的可能值,但 Notepad++ 不提供值补全,那是另一个 XML 文件(html-attr-values.xml)管的,不在本文讨论范围
最常被卡住的地方是:改了
html.xml却忘了重启软件,或者路径找错用了只读的安装目录副本。补全是纯客户端行为,没有网络请求、没有后台服务,所有逻辑就压在这一个 XML 文件里。 - 检查是否启用自动触发:菜单栏










