auto_match_enabled默认不生效,必须在User Settings中显式设置为true;若语法专属设置或插件(如Emmet、Vintage)覆盖该值,也会导致失效。

auto_match_enabled 默认是开启的,但只要你没在用户设置里显式写上 "auto_match_enabled": true,它就**不会生效**——不是“默认开”,而是“默认不继承”。这是绝大多数人卡住的第一步。
为什么输(没反应?先看用户设置里有没有这行
Sublime 不读默认配置里的 "auto_match_enabled": true,只认你亲手写进右侧「User Settings」里的那一行。空配置 ≠ 默认启用。
- 打开
Preferences → Settings,只看右侧(User Settings) - 如果里面什么都没有,直接贴入:
{"auto_match_enabled": true} - 如果已有内容,确认包含且拼写准确:不能是
auto_match_enable、不能漏引号、不能多逗号 - 保存后立刻生效,不用重启
明明开了还失效?检查语法专属设置是否偷偷关掉了
即使全局设对了,你在 .py、.json 或 .md 文件里输 { 没反应,大概率是该语法类型单独写了 "auto_match_enabled": false —— 这个设置优先级比用户配置还高,且完全静默。
- 打开那个不生效的文件,再点
Preferences → Settings – Syntax Specific - 看右侧是否有
"auto_match_enabled": false;有就删掉,或改成true - 如果右侧为空,手动加一行:
"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
auto_match_enabled 管哪些符号?别和 match_brackets 搞混
auto_match_enabled 控制“输不输”:敲 ( 就补 ),敲 " 就补 ",支持 ()、[]、{}、''、""、``。
-
match_brackets是另一回事:它只控制光标停在括号上时,另一侧是否高亮,**不参与补全逻辑** - 想只关引号补全?用
"auto_close_quotes": false,它比关整个auto_match_enabled更精准 - 自闭合标签(如
)的补全和这个无关,那是auto_close_tags或插件的事
最易忽略的其实是语法专属设置——它不报错、不提示、不弹窗,却能让你调半天用户配置都白忙。











