auto_match_enabled必须显式设为true才启用括号引号自动补全,user settings中缺失或为false即失效;syntax specific设置和emmet/vintage插件可能静默覆盖该功能。

auto_match_enabled 必须显式设为 true,否则括号、引号一个都不会自动补全——这不是“默认就工作”的功能,而是严格依赖这个开关的显式启用。
确认 User Settings 里写了 "auto_match_enabled": true
Sublime 不继承左侧 Default Settings 的值,哪怕那里明写着 true,只要右侧 User Settings 里没这行,或写成 false,功能就彻底关闭。
- 打开
Preferences → Settings,只看右侧「User Settings」面板 - 确保内容是合法 JSON,且至少包含这一行:
"auto_match_enabled": true - 如果已有其他配置,把它加进去即可;如果整块为空,只写
{"auto_match_enabled": true}也完全有效 - 保存(
Ctrl+S),立刻生效,不用重启;格式出错(比如多逗号、引号不闭合)会导致整段配置失效
检查当前文件的 Syntax Specific 设置是否覆盖了它
右下角显示的语法名(如 JSON、Python、Markdown)可能悄悄关掉了补全——这个设置优先级比 User Settings 还高,且不报错、不提示。
- 打开那个不生效的文件(比如
config.json) - 点击右下角语法名 →
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
match_brackets 和 auto_match_enabled 完全无关
很多人开了补全但没开高亮,结果补全真发生了(光标停在中间),自己却以为没用。
-
auto_match_enabled控制“输不输”:敲(时要不要自动补) -
match_brackets控制“亮不亮”:光标停在括号上时另一侧是否高亮 - 两者独立开关:关了
auto_match_enabled,match_brackets仍可高亮;反之亦然 - 补全发生后,光标默认停在中间(如输入
"得到"",光标在中间);按Tab或→可跳过右符号











