auto_match_enabled 必须显式设为true才启用括号引号自动补全,且语法专属设置优先级最高,会覆盖用户设置;需检查user settings和当前文件syntax specific设置,并排除emmet/vintage插件干扰。

auto_match_enabled 必须设为 true,否则括号、引号一个都不会自动补全——这不是“默认就工作”的功能,而是严格依赖这个开关的显式启用。
确认 User Settings 里写了 "auto_match_enabled": true
Sublime 不会继承默认设置里的 true,哪怕左侧 Default Settings 明明写着它,只要右侧 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) - 点击 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
别把 match_brackets 高亮和补全搞混
auto_match_enabled 控制“输不输”(敲 ( 时要不要自动补 )),而 match_brackets 只控制“亮不亮”(光标停在括号上时另一侧是否高亮)。很多人开了补全但没开高亮,结果补全真发生了,自己却以为没用。
- 补全发生后,光标默认停在中间,比如输入
"得到"",光标在两个引号之间 - 按
Tab或→可跳过右符号;连按两次)会多输一个,不是 bug 是预期行为 - 如果想确认补全是否触发,可以先删掉右侧符号再重输左符号,观察是否重新补全
.json 文件对应的 Syntax Specific 设置里是 false,补全就永远不会发生。











