auto_match_enabled未设为true时补全完全不生效;需在User Settings中设为true,且语法专属设置、Emmet/Vintage插件、match_brackets高亮设置及输入法/语法识别状态均需正确配置。

auto_match_enabled 没设为 true,补全就根本不会动
Sublime Text 的括号、引号自动补全不是“默认开着就稳的”,它完全依赖一个开关:auto_match_enabled。哪怕默认设置里是 true,只要你用户配置里没写、或写了 false,它就等于关着——连试都不试一下。
- 打开 Preferences → Settings,只看右侧「User Settings」面板
- 确保里面只有这一行(或至少包含):
{ "auto_match_enabled": true } - 如果已有
"auto_match_enabled": false,直接改成true - 保存(
Ctrl+S),立刻生效,不用重启;多一个逗号、少一个引号,整段配置就失效,补全直接消失
JSON/Python/Markdown 文件里不补全?语法专属设置在静默覆盖
你全局设对了 auto_match_enabled,但一打开 config.json 或 main.py 就不补全,大概率是语法专属设置偷偷关掉了它——这个设置优先级比用户配置还高,且不报错、不提示。
- 打开那个不生效的文件(比如
data.json),再点 Preferences → Settings – Syntax Specific - 看右侧有没有
"auto_match_enabled": false:有就删掉,或改成true - 如果是空的,就手动加一行:
"auto_match_enabled": true - 这个设置只影响当前语法类型(右下角显示的名称),比如 Python 设置不会影响 JS,但会覆盖所有
.py文件
按 ( 或 " 没反应?Emmet 和 Vintage 正在劫持输入
即使配置全对,输入后毫无反应,很可能是插件把按键事件“吃掉了”:Emmet 把 { 当缩写前缀,Vintage 把 ' 当命令触发符,补全根本没机会执行。
- 临时验证:菜单栏 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,是它们的设计逻辑——只是和补全撞上了
补全发生了但你没察觉?别把 match_brackets 和 auto_match_enabled 搞混
auto_match_enabled 控制“输不输”(敲 ( 时要不要自动补 )),而 match_brackets 控制“亮不亮”(光标停在括号上时,另一侧是否高亮)。很多人开了补全却没开高亮,结果补全真发生了,自己却以为没用。
- 高亮需额外确认:
match_brackets默认开启,但某些语法(如 Vue、JSX)未正确定义括号规则,会导致高亮失效 - 临时验证:切到 Plain Text 模式,输入
(test)看是否高亮,能则说明当前语法有问题 - 输入中文全角符号(如
(或“)不会触发任何补全——确保输入法处于英文状态 - 在字符串或注释内输入括号(如
console.log("(hello)");)也不会补全,这是预期行为,不是故障
最常被忽略的点是:语法识别错了,整个补全链就断了。右下角显示的是 Plain Text 还是 JavaScript,比反复调配置更直接决定功能是否可用。

















