自动配对失效主因是auto_match_enabled未显式设为true,需检查用户设置、语法专属设置及Emmet/Vintage插件冲突,并区分其与match_brackets高亮功能。

自动配对没反应?大概率不是功能坏了,而是auto_match_enabled被关了,或者被语法专属设置/插件悄悄覆盖了。
怎么确认并开启 auto_match_enabled
这个开关必须显式设为 true 才生效,Sublime 不会回退到默认值——哪怕左侧默认设置里是 true,只要右侧用户设置里没写、写了 false 或格式出错,它就等于关着。
- 打开
Preferences → Settings,只看右侧「User Settings」面板 - 删掉所有无关内容,只保留这一行:
{ "auto_match_enabled": true } - 保存(
Ctrl+S),立刻生效,不用重启 - 如果配置里多了一个逗号、少了一对引号,整段 JSON 会失效,
auto_match_enabled就当不存在
为什么在 .json/.py/.md 文件里还是不补全?
语法专属设置(Syntax Specific)优先级比用户设置还高,且不报错、不提示。你全局开对了,但当前文件类型可能单独关掉了它。
- 打开一个不生效的文件(比如
config.json) - 点
Preferences → Settings – Syntax Specific - 看右侧有没有
"auto_match_enabled": false—— 有就删掉,或改成true - 如果是空的,就手动加一行:
"auto_match_enabled": true - 这个设置只影响右下角显示的那个语法名(如
JSON),不会波及其他文件类型
Emmet 和 Vintage 插件为什么让括号“消失”?
它们会劫持输入事件:Emmet 把 {、[ 当作缩写前缀,Vintage 把 ' 当作命令触发符,导致 Sublime 根本收不到按键,自动配对自然没机会运行。
- 临时验证:菜单栏
Preferences → Package Control → Disable Package,逐个禁用Emmet和Vintage,再试输入 - Emmet 用户可在它的用户设置中加:
"disable_auto_insertion": true - Vintage 用户可设:
"vintage_start_in_command_mode": false - 别指望禁用插件一劳永逸——它们和
auto_match_enabled是同一层输入拦截,冲突时得调兼容项,不是谁该让路的问题
补全了但没看见?别混淆 auto_match_enabled 和 match_brackets
auto_match_enabled 控制“输不输”:你敲 (,它决定要不要自动补 );match_brackets 控制“亮不亮”:光标停在括号上时,另一侧是否高亮。很多人开了补全却没开高亮,补全发生了也察觉不到。
-
match_brackets默认是true,但如果你改过主题或装过 BracketHighlighter,它可能被覆盖 - 检查用户设置里有没有
"match_brackets": false,有就删掉或改成true - 高亮只在光标“精确落在括号字符上”时触发,停在空格或字符串内部都不行
- 中文全角符号(如()、【】)完全不参与自动配对,务必确认输入法处于英文状态
最常被忽略的是语法专属设置——它藏得深、优先级最高、不提示也不报错。哪怕你把用户设置调得完美无缺,只要右下角那个语法类型悄悄关了 auto_match_enabled,补全就永远不会发生。

















