直接设"auto_match_enabled": false可全局关闭所有成对符号自动补全;若需仅禁用引号,应使用"auto_close_quotes": false并确保"auto_close_brackets": true。

直接关掉括号自动补全,只需设 "auto_match_enabled": false,但要注意它会同时禁用所有成对符号(()、[]、{}、""、'')的自动补全——Sublime 没有原生方式只关圆括号而留引号。
怎么在用户设置里全局关闭括号和引号自动补全
打开 Preferences → Settings,专注右侧「User Settings」面板(左侧默认设置无效)。确保里面包含且仅包含这一行有效配置:
{"auto_match_enabled": false}
保存后立即生效,无需重启。常见错误是误以为左侧默认值为 true 就等于开启——Sublime 完全不继承、不回退,你没写,它就当这个功能不存在。
- 如果已有其他设置,检查 JSON 格式:逗号不能多、引号必须闭合、键名不能拼错(比如写成
auto_match_enable) - 这个开关一关,
(、[、{、"、'全部失去自动补全能力,不是“选择性失灵” - 临时绕过补全:输完
(后按→(右方向键),光标直接跳到右括号外侧;误触发后按Ctrl+Z撤销最稳
只想关引号、保留括号?用 auto_close_quotes 单独控制
Sublime 从较新版本开始支持细粒度开关,可在同一份 User Settings 里组合使用:
{
"auto_close_quotes": false,
"auto_close_brackets": true
}
这样输入 " 不再补全 "",但 ( 仍会出 ()。注意:auto_close_brackets 控制 ()、[]、{},auto_close_quotes 专管 "" 和 ''。
- 这两个参数优先级高于
auto_match_enabled:只要它们存在,auto_match_enabled的值就不再起作用 - 如果只写
"auto_close_quotes": false而不提auto_close_brackets,后者默认为true,括号照常补全 - 别和
match_brackets搞混:match_brackets是高亮配对括号,不影响“输不输”
为什么在 .json 或 .py 文件里关不掉?检查语法专属设置
即使 User Settings 写对了,某些文件类型仍可能无视它——因为 Settings – Syntax Specific 的优先级更高,且静默覆盖。
- 打开一个不生效的文件(比如
config.json),再点Preferences → Settings – Syntax Specific - 看右侧是否已有
"auto_match_enabled": false或"auto_close_quotes": false等配置;有就删掉或改成true - 如果右侧为空,加一行
"auto_match_enabled": false(或按需用细粒度参数),保存即刻影响所有同语法文件 - 状态栏右下角显示的语法名(如 “JSON”、“Python”)就是该设置生效范围,不是文件扩展名
Emmet 或 Vintage 插件让括号补全“看起来失效”
这两个插件会劫持按键事件: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 - 这不是 bug,是设计如此——只是和补全逻辑撞上了
真正容易被忽略的是:语法专属设置能覆盖一切,且不报错、不提示;而 auto_close_quotes 和 auto_close_brackets 这两个细粒度开关一旦出现,就会让 auto_match_enabled 彻底失效——不是叠加,是替代。











