sublime text 括号自动匹配需显式设置 auto_match_enabled: true 于用户配置或语法专属设置中,且易被插件(如 emmet、vintage)拦截或 json 格式错误导致失效;补全与高亮由两个独立机制控制。

Sublime Text 的括号自动匹配不是“装完就工作”,而是必须显式确认 auto_match_enabled 为 true,且这个值极易被语法专属设置或插件静默覆盖——哪怕你刚重装完 Sublime,第一次打开 config.json 输入 ( 没反应,问题大概率就出在这三处。
确认 User Settings 中 auto_match_enabled 显式为 true
默认设置(左侧)里写的是 true,但 Sublime 完全不继承、不回退。右侧用户配置里没这行,等于关着;写了 false,就是主动关掉;拼错成 auto_match_enable 或多加逗号,整段 JSON 失效,补全直接消失。
- 打开 Preferences → Settings,只看右侧「User Settings」面板
- 确保内容是合法 JSON,且至少包含这一行:
{"auto_match_enabled": true} - 如果已有其他配置,检查是否闭合引号、结尾无多余逗号、键名拼写准确
- 保存(
Ctrl+S)后立即生效,无需重启
检查当前文件的 Syntax Specific 设置是否覆盖了全局
这是最隐蔽也最高频的问题:你在 main.py 里设好了 auto_match_enabled,但打开 package.json 时发现双引号不补全——因为 JSON 语法专属设置悄悄把它关了。它优先级比用户设置还高,且不报错、不提示。
- 打开那个不生效的文件(比如
settings.json) - 点击编辑器右下角当前语法名(如
JSON),选 Settings – Syntax Specific - 右侧如果有
"auto_match_enabled": false,删掉或改成true - 如果是空文件,直接加一行:
"auto_match_enabled": true
排查 Emmet 和 Vintage 插件劫持输入事件
这两个插件会直接拦截按键,让 auto_match_enabled 根本没机会运行。Emmet 把 { 当缩写前缀,Vintage 把 ' 当命令触发符——你敲下去,Sublime 连“看到”这个字符的机会都没有。
- 临时验证:菜单栏 Preferences → Package Control → Disable Package,逐个禁用
Emmet和Vintage,再试输入 - Emmet 用户可保留插件,在其用户设置中加:
"disable_auto_insertion": true - Vintage 用户可在 Preferences → Package Settings → Vintage → Settings – User 中加:
"vintage_start_in_command_mode": false
auto_match_enabled 和 match_brackets 是两套独立机制
很多人开了补全却以为没用,是因为误把“光标停在括号上另一侧没高亮”当成补全失败。其实 auto_match_enabled 只管“输不输”,match_brackets 只管“亮不亮”。两者互不影响。
- 补全是否发生?手动输入
(后立刻按→:如果光标跳到)右侧,说明补全已生效 -
match_brackets默认开启,但某些语法(如 Vue、JSX)未正确定义bracketExpressions,会导致高亮失效 - 高亮颜色太淡?通常是主题未定义好
meta.bracescope,不是配置问题
最容易被忽略的永远是右下角那个小语法名——点开它才能看到 Syntax Specific 设置,而它只要存在,就一定优先于你精心写的 User Settings。哪怕你把所有配置调得滴水不漏,只要当前文件类型悄悄关了 auto_match_enabled,补全就永远不会发生。











