Ctrl+Space是唯一可靠的手动触发函数自动完成列表的快捷键,它不依赖输入前缀,只要语言模式正确、API文件加载成功且自动完成总开关已启用即可生效;Tab和Enter仅用于确认已弹出的补全项。

Ctrl+Space 是唯一可靠的手动触发方式
Notepad++ 没有“输入即弹出”的智能感知,Ctrl+Space 是唯一能强制唤出当前语言补全列表的快捷键。它不依赖输入内容是否匹配前缀,只要 API 文件加载成功、语言模式正确、自动完成总开关已启用,按了就出列表。
常见误操作包括:用 Tab 或 Enter 试图唤出补全(它们只用于选择/确认已有列表)、在 Normal text 模式下乱按、或文件刚打开未重载就测试。如果 Ctrl+Space 按下后无反应,说明底层补全系统根本没激活——先回去检查「启用每个输入的自动完成」有没有勾选。
Tab 和 Enter 只负责确认,不负责触发
Tab 和 Enter 在补全流程中职责明确:当补全菜单已弹出(比如你刚输完 JSON. 或按过 Ctrl+Space),用 ↑/↓ 选中目标项后,Tab 和 Enter 都能插入该条目。但二者行为有细微差别:
-
Tab插入后光标停在补全词末尾,适合继续输入点号或括号 -
Enter插入后会自动跳过右括号(如果补全项带参数提示),比如选中printf()后按Enter,光标直接落在括号内 - 若插件(如 QuickText)劫持了
Tab键,会导致补全菜单闪退或无法选择——此时临时用-noPlugin启动验证
补全不出现?先看状态栏语言和 Ctrl+Space 响应
补全失效时,90% 的问题集中在两个地方:右下角状态栏显示的语言名 和 Ctrl+Space 是否有响应。不是“为什么 for 不补全”,而是“当前是不是被识别为 C++?”、“Ctrl+Space 按下去有没有弹窗?”
- 状态栏显示
Normal text:立刻点菜单「语言 → C++」或「语言 → Python」,别信自动检测 -
Ctrl+Space完全没反应:回设置→首选项→自动完成,确认「启用每个输入的自动完成」已勾选(这是总开关,关了等于没装) -
Ctrl+Space有弹窗但列表为空:说明对应语言的.api文件没加载,检查路径(64 位是%PROGRAMFILES%\Notepad++\autoCompletion\)、文件名(必须小写 +.api)、以及大小写是否和语言模式完全一致(javascript.api对应「JavaScript」,不是「Javascript」)
函数级补全要靠 .api 文件,不是语法高亮
Notepad++ 的语法高亮和自动补全是两套独立机制。高亮靠 langs.xml,补全靠外部 .api 文件。这意味着即使你看到 if 被标蓝,也不代表 std::vector::push_back 会被提示——后者必须有 cpp.api 且其中明确定义了该函数。
- 默认安装包里的
cpp.api或python.api极其简陋,只含基础关键字,不含标准库函数 - 想补
os.path.join,得手动编辑python.api,在<KeyWord name="join" />节点里加完整路径,或换用社区维护的增强版 - 补全匹配是严格前缀:输
vec不会出vector,但输std::vec可能出std::vector;输JSON.才可能出JSON.parse,只输parse不行


















