Notepad++ SQL关键字不补全的根本原因是官方未预置SQL函数级补全,需手动创建小写sql.api文件放入autoCompletion目录并启用自动完成开关。

Notepad++ 里 SQL 关键字不补全,根本原因不是插件没装
Notepad++ 默认压根不为 SQL 提供函数级自动补全——它连 SELECT、JOIN 这类关键字都不会在你敲字母时弹出。这不是插件缺失,而是官方语言定义里没配 <function></function> 节点,也没放 sql.api 或 sql.xml 到对应路径。所谓“装个 SQL 插件就能补全”,多数是误导。
常见错误现象:
- 点了“启用自动完成”,但输
sel按Ctrl+Space什么也不出来 - 下了 SQLPro 或 SQLTools,安装后菜单没变化,或一用就崩溃
- 手动设了语言为
SQL,高亮有了,补全还是空白
真正起作用的只有两样东西:autoCompletion 目录下的 sql.api(小写、.api 后缀),或者 plugins\APIs\ 下的 sql.xml(含 <function></function> 块)。
怎么让 SELECT / WHERE / GROUP BY 真正可补全
最轻量、最稳的方式:手动生成一个极简 sql.api,放进 autoCompletion 目录。它比 XML 更易生效,且不依赖重启(改完即用)。
操作步骤:
- 打开 Notepad++,新建文件,粘贴以下内容(只含常用词,避免冗余):
<NotepadPlus> <Autocomplete language="SQL"> <KeyWord name="SELECT" /> <KeyWord name="FROM" /> <KeyWord name="WHERE" /> <KeyWord name="AND" /> <KeyWord name="OR" /> <KeyWord name="JOIN" /> <KeyWord name="ON" /> <KeyWord name="GROUP BY" /> <KeyWord name="ORDER BY" /> <KeyWord name="INSERT INTO" /> <KeyWord name="UPDATE" /> <KeyWord name="DELETE FROM" /> </Autocomplete> </NotepadPlus>
- 保存为
sql.api(注意扩展名是 .api,不是 .xml;文件名必须全小写) - 放入路径:
%PROGRAMFILES%\Notepad++\autoCompletion\(64 位)或%PROGRAMFILES(X86)%\Notepad++\autoCompletion\(32 位) - 确认已勾选「设置 → 首选项 → 自动完成」里的「启用每个输入的自动完成」
- 当前文件语言必须是
SQL(右下角状态栏显示SQL,不是Normal text)
补全触发逻辑:输 sel 后按 Ctrl+Space,才会列出 SELECT;只输 s 不会自动弹——它不支持前缀模糊匹配,只做精确开头匹配。
为什么 SQLinForm 或 SQLPro 插件对补全没用
SQLinForm 是格式化插件,不是补全插件;SQLPro 是独立补全工具,但它依赖 Notepad++ 的旧版 API,2026 年主流 v8.x 版本中已停止维护,常导致崩溃或禁用其他功能。
关键区别:
-
SQLinForm:只处理缩进、换行、大小写统一,不提供任何代码提示 -
SQLPro:需额外注册 DLL、配置数据库连接,且补全源来自远程服务或本地 schema,和 Notepad++ 原生补全机制完全隔离 - 原生补全(
.api或.xml):纯本地、无依赖、启动快、不联网,但仅限静态关键词
如果你需要表名/字段名补全(比如输 user. 弹出 id、name),Notepad++ 原生做不到——它没有数据库连接能力,所有补全都来自静态定义文件。
补全变小写 or 大写?别动 XML,直接改 .api 文件
很多人想让补全项默认小写(如 select 而非 SELECT),却去改 sql.xml 里的大写字母——这容易破坏结构,且重启后可能不加载。
正确做法:直接编辑你刚建的 sql.api 文件,把 <KeyWord name="SELECT" /> 改成 <KeyWord name="select" /> 即可。所有关键词大小写由 name 属性决定,Notepad++ 不做转换。
注意:
- 改完保存,无需重启,下次按
Ctrl+Space就生效 - 如果用了混合大小写(如
Insert Into),补全会原样输出,不会自动标准化 - 别在
name里加空格或特殊字符(如DELETE FROM可以,但DELETE FROM(NBSP)会导致补全失败)
复杂点在于:补全只响应光标前完整单词,WHERE co 不会提示 COUNT,必须先输 COUNT 再按 Ctrl+Space——这个限制没法绕过,是 Notepad++ 补全引擎的设计硬伤。


















