Notepad++自动补全分三类:函数/关键字补全需正确语言模式+对应.api文件;括号引号补全是独立开关功能;HTML属性补全依赖用户目录下html.xml中标签与属性的精确XML定义,大小写敏感且须重启生效。

Notepad++ 的自动补全不是“装个插件就开”或“点一下就全有”,它分三类:函数/关键字补全、括号引号自动完成、HTML 属性补全——每类触发条件和配置路径都不同,错一个环节就完全不生效。
怎么启用函数名和关键字自动补全
核心是两件事:XML 定义文件存在 + 编辑器识别对语言模式。Notepad++ 不解析代码,只查 api.xml 或 userDefinedLang.xml 里有没有对应语言的 <function> 或 <keyword> 节点。
- 确认当前文件语言正确:右下角看状态栏是否显示
C++、JavaScript等,不是Normal text;点菜单「语言」手动选一次 - 打开「设置 → 首选项 → 自动完成」,勾选「启用每个输入的自动完成」和「函数参数提示」(后者控制括号内参数显示)
- 改完立刻生效,但已打开的文件可能需重新加载(
Ctrl+O再选一次),不用重启 - 按
Ctrl+Space手动触发,如果列表为空,说明对应语言的 API 文件没被加载(比如写 Python 却没放python.xml到plugins\apis\)
为什么括号/引号不自动补全
这不是语法分析功能,而是纯符号配对——输入 ( 就补 ),光标停中间。它和语言模式弱相关,但开关必须手动打开。
- 路径是「设置 → 首选项 → 自动完成」,只勾「括号/引号自动完成」一项即可
- 常见失效原因:误开了「标签栏」里的「关闭按钮」(那是 UI 控件,和补全无关)
- 该功能对所有语言统一生效,但若当前语言被识别为
Normal text,部分版本会禁用(稳妥做法是先切对语言) - 它不会补全自闭合 HTML 标签(如
<img>),也不处理 JS 中的模板字符串引号嵌套
HTML 属性补全为什么总不出现
它不靠语法推导,只查 %APPDATA%\Notepad++\autoCompletion\html.xml 里是否为对应标签明确定义了 <keyword>。写错一个 XML 标签或大小写,整个文件就静默失效。
- 路径必须是用户目录下的
autoCompletion\html.xml(不是安装目录!) - 新增属性要插在正确的
<key name="input">节点内部,且每个<keyword>只能带一个name属性 - 修改后必须重启 Notepad++,热重载不生效
- 大小写敏感:写
required就不会匹配Required;通配符(如*)不支持,<input>和<textarea>必须分别定义
想用代码片段(如输入 log 插入 console.log($1);)怎么办
原生自动补全做不到,必须装 Snippets 插件 + 手动绑快捷键。它不支持占位符跳转($1 不会高亮可编辑),只做纯文本插入。
- 通过「Plugins → Plugin Admin」安装
Snippets,重启后菜单才出现 - 「Plugins → Snippets → Edit snippets」添加片段,保存后需手动绑定快捷键
- 绑定路径:「Macro → Start Recording」→「Macro → Save Current Recorded Macro」→「Settings → Shortcut Mapper → Macro」找刚存的宏,双击设快捷键(如
Ctrl+1) - 宏保存后必须重启 Notepad++ 才能在 Shortcut Mapper 里看到(旧版尤其明显)
最常被忽略的一点:所有 XML 类配置(api.xml、html.xml、userDefinedLang.xml)只要格式错一个字符(比如少闭合 </keyword>),Notepad++ 就直接放弃加载,且不报错——你只会看到补全“莫名失效”。建议每次改完先用浏览器或 XML 验证工具检查格式。

















