Sublime关闭自动补全_Sublime禁用代码提示方法【配置】

5次阅读

关闭 sublime text 自动补全弹窗需在 preferences → settings – user 中设置 “auto_complete”: false,保存即生效;此操作仅禁用自动触发,ctrl+space/cmd+space 仍可手动调出,且不影响 emmet 缩写、snippet 及 lsp 的 tab 补全功能。

Sublime关闭自动补全_Sublime禁用代码提示方法【配置】

怎么关掉 sublime text 的自动补全弹窗

默认开启的 auto_complete 会干扰快速输入,尤其写 HTML 标签或缩写时,弹出的候选框经常卡住光标。关掉它不等于禁用所有提示,只是不让它「自动蹦出来」。

  • 打开 Preferences → Settings – User(不是 default
  • 在右侧面板 json 中添加或修改这一行:"auto_complete": false
  • 保存后立即生效,无需重启

注意:这个设置只影响「自动触发」,Ctrl+Spacewindows/linux)或 Cmd+Spacemacos)仍可手动唤出补全列表,适合需要时再调用。

为什么关了 auto_complete 还有代码提示?

因为 Sublime 有两个独立机制:一个是补全(auto_complete),另一个是内联函数/变量提示(show_definitions 和插件如 SublimeCodeIntelEasyClangComplete)。前者控制弹窗,后者控制悬停或 F12 跳转。

  • 如果悬停仍有提示,检查是否装了第三方插件,直接禁用对应插件即可
  • "show_definitions": false 可关掉内置的悬停定义(但对大多数语言效果有限)
  • 插件级提示不会受 auto_complete 设置影响,必须单独处理

auto_complete_delay 是个陷阱参数

有人想“延迟弹出”而不是彻底关闭,于是设 "auto_complete_delay": 9999。这看似合理,实际会导致两个问题:

  • 输入过程中仍会卡顿,Sublime 仍在后台计算候选词
  • 在某些语法(如 Markdown、JSON)里,延迟值过大反而让补全完全失效
  • 真正想“按需触发”,不如直接设 "auto_complete": false,靠快捷键控制更稳

这个参数本意是优化响应节奏,不是替代开关逻辑。

禁用补全后,HTML 标签缩写(如 div.container)还能用吗?

能。Emmet 插件的展开功能(Tab 键)和补全系统是解耦的。只要 Emmet 没被卸载或禁用,div.container + Tab 依然生成 <div class="container"></div>

  • 确认 Emmet 是否启用:菜单栏 Preferences → Package Settings → Emmet → Settings,看 "disabled_keymap_actions" 里有没有包含 "expand_abbreviation_by_tab"
  • 如果 Tab 不生效,大概率是这个配置项误加了 "expand_abbreviation_by_tab"
  • 禁用补全不影响 Emmet、Snippet、甚至部分 LSP 的 Tab 补全行为

真正的冲突点只在「自动弹窗抢占焦点」,而不是「所有补全能力消失」——这点容易被误解。

text=ZqhQzanResources