notepad++括号自动补全需在“设置→首选项→自动插入”中启用“启用自动插入”,支持()、[]、{}、""、''、``六组硬编码配对,与语言模式无关;原生功能不处理嵌套,多层补全需xbrackets lite插件。

Notepad++ 默认不自动补全括号,必须手动开启对应功能——它不是“开箱即用”,但也不需要装插件。
括号自动补全在哪设置?不是「自动完成」选项卡
很多人在 设置 → 首选项 → 自动完成 里反复勾选「括号/引号自动完成」,却始终无效,是因为这个选项控制的是函数名、变量名提示,和括号补全无关。
真正管括号、引号、方括号自动配对的开关,在:
设置 → 首选项 → 自动插入(Auto-Insert)
该页面只有一个主开关:「启用自动插入」,必须勾选。
它支持以下 6 组硬编码配对,无法增删或自定义:
()[]{}""''``
这个功能与语言模式无关,纯文本、JSON、Python、HTML 文件里都生效。
为什么输入 ( 后没反应?检查这三点
- 当前文件是否被识别为
Normal text或Text模式?某些旧版 Notepad++ 在该模式下会禁用Auto-Insert,可临时切换语言为C++或JavaScript测试 - 光标是否处于行尾空白处?如果前面已有字符(如
func(),Auto-Insert仍会补),但若右侧已有符号(如func()),它不会覆盖或跳过,而是直接在光标后插入,导致变成func()) - 是否启用了「自动插入」但没重启 Notepad++?部分版本需重启才生效,尤其从 v7 升级到 v8 后
嵌套括号补不全?原生 Auto-Insert 就是这样设计的
比如写 console.log(Math.max(1, 2),再输一个 (,原生功能不会补第二个 ),因为:
- 它只做“单次触发”:每输一个左符号,就无条件补一个右符号
- 它不分析上下文,不判断括号是否已闭合,也不跳过已有右符
- 所以在
func(后输(,结果是func((),而不是func(())
如果你常写多层嵌套表达式(如 JS、Lisp 风格、复杂正则),这个限制会明显拖慢节奏。
想让嵌套括号也自动补?用 XBrackets Lite 插件
XBrackets Lite 不是补全主力,但它有个关键选项能绕过原生限制:
- 安装后进入
设置 → XBrackets Lite 选项 - 勾选
Even if corresponding right bracket exists
开启后,哪怕右侧已有 ),再输 ( 仍会补一个新 ),适合快速构建 arr.map(x => x.filter(y => y > 0)) 这类结构。
注意:XBrackets Lite 和原生 Auto-Insert 可共存,但两者逻辑不同:前者专注“按需补右符”,后者是“机械配对”。混用时可能多出一个括号,需要自己删——这点容易忽略,尤其在写 JSON 或配置文件时。











