直接关闭auto_complete最省事,但需拆分控制:auto_complete管弹窗、auto_match_enabled管括号引号,二者独立且支持语法类型单独设置。

直接关掉全局自动补全最省事,但真要“只提示想看的”,就得拆开控制——auto_complete 管弹窗,auto_match_enabled 管括号引号,两者互不干扰,也都能按语法类型单独设。
怎么彻底不让补全框自动弹出来
干扰最大的就是输几个字母就蹦出候选框。这不是插件行为,是 Sublime 原生机制,改一个开关就行:
- 打开
Preferences → Settings – User(只动右侧用户设置) - 加这行:
"auto_complete": false,确保 JSON 格式合法(逗号、引号闭合) - 保存即生效,不用重启
- 注意:
auto_complete_commit_on_tab和auto_complete_delay不是替代方案——前者只影响 Tab 提交逻辑,后者延迟反而卡顿,别用它们“假装关闭”
为什么关了 auto_complete 还有括号/引号自动补全
因为这是另一套系统:auto_match_enabled 控制所有成对符号(()、[]、{}、""、''),和代码提示完全无关。
- 想关掉所有自动配对:在 User Settings 里加
"auto_match_enabled": false - 想保留括号但关引号?较新版本支持细粒度控制:
"auto_close_quotes": false+"auto_close_brackets": true,此时auto_match_enabled的值会被忽略 - 常见失效原因:语法专属设置(如 JSON.sublime-settings)里写了
"auto_match_enabled": true,优先级更高,得去Preferences → Settings – Syntax Specific里手动覆盖
怎么只为某类文件禁用补全(比如 .log 或 .md)
全局关太粗暴,实际只需要抑制特定场景。Sublime 的语法专属设置才是关键路径:
- 先打开一个目标文件(例如
app.log),确认右下角状态栏显示的是 “Plain Text” 或 “Log” - 菜单点
Preferences → Settings – Syntax Specific,它会自动打开对应语法的设置文件(如Plain Text.sublime-settings) - 在里面加:
"auto_complete": false(注意:这里写auto_complete有效,但写auto_match_enabled也得加,因为两者独立) - 保存后,所有同语法文件立即生效;不同语法(如 Python、JS)完全不受影响
- 别误写成
"auto_complete": {"source.log": false}——Sublime 不认这种写法,只支持布尔值或作用域选择器(如"auto_complete_selector": "invalid")
插件导致补全“关不掉”的排查顺序
Emmet、SublimeLinter、Vue Syntax Highlight 这些插件常绕过原生设置,自己调用 view.run_command("auto_complete"),所以你改了设置也没用。
- 第一步:用
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS)打开命令面板,输Package Control: Disable Package,逐个禁用疑似插件,观察是否还弹 - 第二步:检查状态栏右下角语法名,切换到其他语法(如从 HTML 切到 Plain Text)再试——某些语法绑定自带补全逻辑,不是设置问题
- 第三步:Emmet 用户可不卸载,改它的设置:
"disable_auto_insertion": true;Vintage 模式用户需关掉命令模式:"vintage_start_in_command_mode": false - 最后提醒:
show_definitions是悬停提示,和auto_complete无关,关它没用
真正容易被忽略的是优先级链:语法专属设置 > 用户设置 > 默认设置,而插件又可能完全绕过这条链。动手前先确认当前文件的语法名,再决定去哪个 Settings 文件里改——否则改半天,其实根本没生效。


















