设 "auto_complete": false 即可全局禁用自动补全弹窗,不依赖语法类型;它仅关闭自动触发,不影响手动调用(ctrl+space)、emmet/tab 补全及 snippet 展开。

直接在用户设置中设 "auto_complete": false 就能禁用自动完成弹窗,它不依赖语法类型,对所有语言生效;但要注意这个设置只关「自动触发」,不影响手动调用(如 Ctrl+Space)或 Emmet/Tab 补全。
为什么改 auto_complete 就够了,不用按语法单独配
Sublime Text 的自动补全弹窗由全局开关 auto_complete 控制,不是按语法(syntax)或作用域(scope)逐个启用的。即使你打开的是 .py、.html 或 .json 文件,只要这个值为 false,就不会自动弹出候选框。
-
auto_complete是顶层控制开关,和当前文件的scope、syntax、file_extensions都无关 - 某些插件(如 LSP)可能绕过该设置自行弹窗,但那是插件行为,不是 Sublime 原生逻辑
- 如果你只想在某类文件里禁用(比如 Markdown),反而得用插件或自定义命令,没必要也不推荐
auto_complete_delay 不是替代方案,别乱设
有人想“延迟弹出”而不是关闭,于是设 "auto_complete_delay": 9999。这会带来两个实际问题:
- 输入过程中 Sublime 仍在后台计算补全项,光标可能卡顿,尤其在大文件或低配机器上
- 在
Markdown、Plain Text等语法下,过大的 delay 值可能导致补全完全失效,连手动Ctrl+Space都没反应 - 这个参数本意是微调响应节奏,不是功能开关——真要控制弹窗,就该用
auto_complete本身
禁用后哪些功能还能用?哪些不能?
设 "auto_complete": false 后:
- ✅
Emmet缩写(如div.container+Tab)照常工作,它走的是独立展开逻辑 - ✅ 手动按
Ctrl+Space(Windows/Linux)或Cmd+Space(macOS)仍可唤出补全列表 - ✅ Snippet 和部分 LSP 的
Tab补全不受影响 - ❌ 自动弹窗抢占焦点的行为被彻底切断——这才是你要解决的核心干扰点
如果悬停时仍有函数签名提示(比如 JS/Python),那大概率是插件(如 SublimeCodeIntel 或 EasyClangComplete)在起作用,跟 auto_complete 设置无关,需单独查插件配置或禁用插件。
怎么确认改对了位置?常见误操作
必须改的是 Preferences → Settings 右侧的「User Settings」面板,路径通常是:
- Windows:
%APPDATA%\Sublime Text\Packages\User\Preferences.sublime-settings - macOS:
~/Library/Application Support/Sublime Text/Packages/User/Preferences.sublime-settings - Linux:
~/.config/sublime-text/Packages/User/Preferences.sublime-settings
左侧 Default Settings 是只读的,改了无效;JSON 格式要合法——如果前面已有配置(如 "hot_exit": true),新加的 "auto_complete": false 行末尾必须加英文逗号。











