
确认 auto_match_enabled 是否真正启用
自动补全单引号(')不是独立开关,它和括号、双引号共用同一个总控配置:auto_match_enabled。很多人改了设置却没效果,是因为只看了默认设置(左侧),而 Sublime 以用户设置(右侧)为准——哪怕只写一行也生效。
- 打开 Preferences → Settings,专注编辑右侧「User Settings」
- 确保内容为:
{ "auto_match_enabled": true } - 保存(
Ctrl+S),无需重启,立刻生效 - 如果该文件是空的,就只写这行 JSON,别加其他字段——格式错误会导致整个配置失效
为什么输入 ' 还是不自动补全?检查语法专属设置
即使全局设为 true,某些文件类型(比如 JSON、Python、Markdown)可能在 Settings – Syntax Specific 里单独关掉了它。这是最隐蔽也最常见的失效原因。
- 打开一个你发现单引号不补全的文件(例如
config.json) - 点击 Preferences → Settings – Syntax Specific
- 看右侧是否出现
"auto_match_enabled": false或缺失该字段 - 如果有,删掉或改成
true;如果空白,可手动添加这一行
想只关单引号、保留括号?用 auto_close_quotes
Sublime 原生支持按符号类型拆分控制:auto_close_quotes 专管引号('' 和 ""),auto_close_brackets 管括号类(()、[]、{})。它们优先级高于 auto_match_enabled,但只在后者为 true 时才起作用。
- 若只想禁用单引号自动补全,保留圆括号:
{ "auto_match_enabled": true, "auto_close_quotes": false }
auto_close_quotes 对反引号 `` 无效,那是 Markdown 场景专用,需插件支持插件干扰:Emmet 和 Vintage 最常“吃掉”引号输入
Emmet 默认劫持 ' 和 " 的输入行为(尤其在 HTML/JS 文件中),Vintage 模式则会把单引号当作命令前缀(比如 'a 跳转到标记 a),导致自动补全根本没机会触发。
- 临时验证:禁用 Emmet(Preferences → Package Settings → Emmet → Settings,设
"enabled": false)再试 - Vintage 用户可尝试在它的用户设置中加:
{ "vintage_start_in_command_mode": false } - 不建议长期关插件,而是优先检查其文档是否有兼容选项(如 Emmet 的
disable_auto_insertion)
真正容易被忽略的点是:语法专属设置的覆盖优先级最高,且它藏得深、不报错、不提示。哪怕你把用户设置调得再完美,只要当前文件类型(右下角显示的那个)悄悄关了 auto_match_enabled,单引号就永远不会自动闭合。










