禁用 auto_match_enabled 无效的主因是语法专属设置覆盖,其次为 Emmet/Vintage 插件劫持输入事件,或使用更优先的 auto_close_quotes/auto_close_brackets 细粒度控制。

直接设 auto_match_enabled 为 false 就能禁用,但改完常没反应——不是配置错了,而是被语法专属设置或插件悄悄覆盖了。
为什么 auto_match_enabled 设为 false 还是自动补全
最常见原因是 Settings – Syntax Specific 静默覆盖。它的优先级高于用户设置,且不报错、不提示。比如你正在编辑 config.json,右下角显示“JSON”,那这个语法类型就可能单独关掉了补全。
- 打开一个不生效的文件(如
main.py或index.html) - 点击右下角语法名(如 “Python”、“HTML”)→
Settings – Syntax Specific - 检查右侧是否有
"auto_match_enabled": false或"auto_match_enabled": true:有就删掉,或统一改成false - 如果右侧为空,手动加一行:
"auto_match_enabled": false - 保存后立即生效,只影响该语法类型的所有文件
Emmet 和 Vintage 插件会让 auto_match_enabled 彻底失效
这两个插件会在按键按下瞬间劫持输入事件:Emmet 把 {、" 当作缩写前缀处理;Vintage(vi 模式)把单引号 ' 当作命令触发符。它们吃掉了原始输入,auto_match_enabled 根本没机会运行。
- 临时验证:菜单栏
Preferences → Package Control → Disable Package,逐个禁用Emmet和Vintage,再测试输入 -
Emmet用户可保留插件,在Preferences → Package Settings → Emmet → Settings – User中添加:"disable_auto_insertion": true -
Vintage用户可在同路径的Settings – User中添加:"vintage_start_in_command_mode": false
想只关引号、留括号?用 auto_close_quotes 单独控制
auto_match_enabled 是总开关,一关全关;但较新版本 Sublime 支持细粒度参数,优先级更高:
-
"auto_close_quotes": false—— 关闭""和''自动补全 -
"auto_close_brackets": false—— 关闭()、[]、{} - 只要这两个参数存在,
auto_match_enabled的值就不再起作用 - 例如只关引号:在用户设置中写
{"auto_close_quotes": false},不用提auto_close_brackets(它默认为true)
别把 match_brackets 高亮和自动补全搞混
match_brackets 控制光标停在括号上时另一侧是否高亮,和“输不输”完全无关。很多人开了补全却没注意高亮没生效,误以为补全失败。
- 补全是否发生,看输入
(后光标是否跳到中间,或按→是否直接移到)外侧 - 高亮颜色太淡?通常是主题未正确定义
meta.bracescope,不是配置问题 - 若只想关高亮,设
"match_brackets": false即可,不影响补全
最容易被忽略的是:语法专属设置藏在右下角语法名菜单里,不点开根本看不到。哪怕用户设置写得再准,只要当前语法类型悄悄关了 auto_match_enabled,补全就永远不会发生。

















