禁用自动匹配需优先检查语法专属设置和Emmet/Vintage插件干扰:语法设置优先级高于用户配置,Emmet和Vintage会劫持按键事件使auto_match_enabled失效,应分别通过Syntax Specific设置、禁用插件或配置其选项解决。

直接设 auto_match_enabled: false 就能禁用所有括号、引号的自动匹配,但改完常没反应——不是设置错了,而是被更高优先级的配置或插件悄悄覆盖了。
为什么 auto_match_enabled: false 看似生效却还在补全
最常见原因是语法专属设置(Syntax Specific)静默覆盖了用户设置。它的优先级比 User Settings 高,且不报错、不提示,你改了全局设置,它在 .py 或 .json 文件里照样按自己的规则走。
- 打开一个仍会自动补全的文件(比如
main.py) - 点击编辑器右下角显示的语法名(如 “Python”)→ Settings – Syntax Specific
- 检查右侧是否有
"auto_match_enabled": true或"auto_close_quotes": 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 单独控制
Sublime 较新版本支持细粒度开关,但要注意:只要 auto_close_quotes 或 auto_close_brackets 出现在配置里,auto_match_enabled 的值就完全失效。
- 只关引号(
""、''),保留括号类(()、[]、{}):{"auto_match_enabled": true, "auto_close_quotes": false} - 只关括号,留引号:
{"auto_match_enabled": true, "auto_close_brackets": false} - 注意:
auto_close_quotes不影响反引号``,那是 Markdown 场景专用,需插件支持
别把 match_brackets 和自动补全搞混
match_brackets 控制的是光标停在括号上时另一侧是否高亮,和“输不输右半边”完全无关。很多人开了 auto_match_enabled 却没注意高亮没生效,误以为补全失败;也有人关了 auto_match_enabled 却忘了关 match_brackets,结果括号明明没补全,高亮还一直在闪。
- 确认补全是否真发生:输入
(后立刻按→(右方向键),如果光标跳到)外侧,说明补全已生效 - 若只想关高亮,单独设
"match_brackets": false即可,不影响补全逻辑
真正容易被忽略的点是:语法专属设置藏得深、不报错、不提示,而 Emmet/Vintage 的劫持是设计使然,不是 bug——它们根本没打算让原生补全介入。改配置前,先看右下角语法名、再查插件状态,比反复重写 JSON 有效得多。

















