Notepad++自动补全依赖api.xml或userDefinedLang.xml中的函数/关键字定义,而非词库安装;需确保语言模式正确、自动完成选项启用,并将XML文件置于对应位数版本的plugins\APIs路径下,修改后必须重启生效。

Notepad++ 的自动补全功能不依赖“词库安装”,而是靠 api.xml 或自定义 userDefinedLang.xml
Notepad++ 本身没有“安装词库”这个操作,它用的是 XML 格式的 API 定义文件来触发函数/关键字补全。你看到的“补全”几乎都来自 api.xml(对应语言)或用户自定义语言的 keywords 区块。直接拖一个 txt 进去不会生效。
常见错误现象:
• 把一堆关键词文本复制进 Notepad++ 设置里,结果按 Ctrl+Space 没反应
• 下载了别人打包的 “autocomplete.zip”,解压后扔进插件目录,依然没补全
• 在“设置 → 首选项 → 备份/自动完成”里勾了“启用自动完成”,但只对部分语言有效
- 补全只在「支持该语言的 API 文件存在且被正确加载」时才工作
- 每种语言对应一个
api.xml(如python.xml、javascript.xml),路径通常在%PROGRAMFILES%\Notepad++\plugins\APIs\或便携版的plugins\APIs\ - 如果你用的是自定义语言(比如写某种配置格式),补全必须写进
userDefinedLang.xml的<keywords>节点里,且需重启 Notepad++ 才生效
怎么让 Python / JavaScript 等语言真正有函数级补全
默认安装的 Notepad++ 只带基础关键字,不带标准库函数。想补全 os.path.join 或 Array.prototype.map 这类,得手动维护或替换 api.xml。
- 官方不提供动态更新机制,所有
api.xml都是静态文件,版本一变就得重配 - Python 补全推荐用
python.xml(不是python2.xml或python3.xml),内容要包含<function>块,例如:<function>os.path.join</function>
- JavaScript 补全容易漏掉 ES6+ 新增方法,比如
Promise.allSettled,得自己加到javascript.xml的<function>列表里 - 修改后必须重启 Notepad++,仅重载语言或切换主题无效
自定义语言(UDL)里加补全:关键词和函数不能混写
在“语言 → 定义你的语言”里设好 UDL 后,补全行为由两个独立字段控制:一个是 keywords(用于高亮和基础补全),另一个是 functions(用于 Ctrl+Space 弹出的函数列表)。它们在生成的 userDefinedLang.xml 中是不同节点。
-
keywords支持多组(group 1,group 2),但只有group 1会参与补全;其他组只影响高亮 -
functions必须写在<functions><function>xxx</function></functions>结构内,不能塞进keywords里 - 如果用了空格或点号(如
mylib.do_something),Notepad++ 会截断到第一个非字母字符,实际补全只显示mylib—— 它不支持嵌套命名空间补全 - 关键词大小写敏感,
Print和print是两个条目,别指望自动匹配
为什么改了 api.xml 还是没补全?检查这三处
补全失效最常卡在这三个地方,不是代码问题,是配置链断了。
- 当前文档的语言模式没设对:右下角状态栏显示的是
Normal Text,不是你期望的语言名 —— 点击它手动选,或用Language → Python切换 -
设置 → 首选项 → 备份/自动完成 → 自动完成里,“函数参数提示”和“自动完成”两个勾都要开,缺一不可 - Notepad++ 是 32 位还是 64 位?插件/API 路径位置不同:
• 32 位版默认查%PROGRAMFILES%\Notepad++\plugins\APIs\
• 64 位版可能查%PROGRAMFILES(X86)%\Notepad++\plugins\APIs\,放错位置就加载失败
补全逻辑本身很朴素:匹配前缀 + 查 XML + 弹列表。它不分析语法,也不读源码,所以别期待它理解 import 或作用域 —— 那些都是 IDE 的事。

















