auto_match_enabled 必须在用户设置中显式设为 true 才生效,且需确保语法正确、输入法为英文、无插件劫持或语法专属设置覆盖。

auto_match_enabled 必须为 true 才能补 {}
Sublime Text 默认不自动补全 { 和 },哪怕你看到默认配置里写了 "auto_match_enabled": true,它也不会生效——除非你在 Preferences → Settings – User(右侧)里**亲手写上这一行**。
常见错误是只改了左侧的 Default 设置,或用户设置里压根没这行。空配置 ≠ 开启。直接在右侧加:
{"auto_match_enabled": true}
保存即刻生效,不用重启。如果已有其他配置,确保拼写准确、逗号合法、引号闭合。
为什么输 { 没反应?先看语法和输入法
即使 auto_match_enabled 是 true,以下情况也会让大括号补全失效:
- 当前文件被识别为
Plain text或非标准语法(比如某些 Vue/Markdown 插件覆盖了 scope),auto_match_enabled在这些语法下默认不触发 - 光标前是字母、数字或下划线(例如
if{或func{),Sublime 会主动跳过补全,避免干扰代码语义 - 输入法处于中文状态——Sublime 只响应 ASCII
{,不响应全角或软键盘输出的左花括号
验证方法:切换英文输入法,新建一个 .js 文件,输入 if (true) {,看是否自动补 }。
别和 match_brackets 搞混:高亮 ≠ 补全
match_brackets 控制的是光标停在 { 上时,另一侧是否高亮,它完全不参与“输不输”的逻辑。关掉它不影响自动补全,开了它也不等于能补 }。
如果你只想关引号、留大括号,用细粒度控制:
{"auto_match_enabled": true,"auto_close_quotes": false}
这样 { 仍会补 },但 ' 和 " 不再自动配对。注意:auto_close_brackets 参数在较新版本中可用,但优先级低于 auto_match_enabled,且必须配合后者为 true 才生效。
插件劫持是最隐蔽的失效原因
Emmet 和 Vintage 插件会在你按 { 的瞬间拦截按键事件,导致 auto_match_enabled 根本没机会运行。
临时验证方式:
- 菜单栏
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
真正容易被忽略的是语法专属设置——它不报错、不提示,却拥有最高优先级。打开一个不生效的文件,点右下角语法名 → Settings – Syntax Specific,检查右侧是否有 "auto_match_enabled": false。有就删掉,或统一改成 true。











