Ctrl+Space无反应需同时满足:语法模式设为具体编程语言(非Plain Text)且用户设置中启用"auto_complete": true;LSP补全还需全局启用对应语言服务器并确保项目被识别为workspace。

Ctrl+Space 按了没反应?先确认语法模式和 auto_complete 开关
按 Ctrl+Space 没弹出补全窗口,不是插件坏了,而是 Sublime 根本没启动补全逻辑。它只在满足两个硬性条件时才响应:当前文件被识别为具体编程语言(比如 Python、JavaScript),且用户设置里明确启用了 auto_complete。
右下角状态栏显示 Plain Text 就等于关闭了所有语言相关能力——LSP 不加载、括号匹配不智能、补全也不触发。必须点开它,手动选成对应语言;或者用 Ctrl+Shift+P → 输入 Set Syntax: Python 回车。
auto_complete 是开关,不是“智能等级”设置。它默认是 false,必须手动打开:
- 打开
Preferences → Settings(只改右侧 User 面板) - 加这一行:
"auto_complete": true(注意末尾英文逗号) - 保存,无需重启
LSP 插件装了但没生效?检查服务器是否全局启用
LSP 插件本身只是容器,真正提供代码提示的是语言服务器(如 pylsp、typescript-language-server)。装完插件不等于自动启用服务器——它默认是休眠状态。
必须手动激活一次:
- 按
Ctrl+Shift+P打开命令面板 - 输入
LSP: Enable Language Server Globally - 从列表中选你要的语言(例如
pylsp)
成功后,状态栏左下角会显示 LSP-pylsp active。如果没出现,说明服务器没装好、路径不对,或系统缺依赖(如 Python 环境里没装 python-lsp-server)。
为什么 .py 文件里能提示 os.listdir,但自定义函数不提示?
原生 LSP 补全只基于语言服务器的静态分析能力,不扫描当前项目所有文件。它能提示 os.listdir 是因为 pylsp 内置了标准库 stub,但对未导入、未声明类型、跨文件未索引的函数,默认不推断。
常见卡点:
- 函数定义在另一个未打开的
.py文件里,且没被import进当前文件 - 用了动态属性(如
getattr(obj, name)),LSP 无法静态判定 - 变量没标注类型,比如
data = load_config(),LSP 不知道data是什么结构 - 项目根目录没被 LSP 识别为 workspace(尤其多级嵌套项目),需右键文件夹 →
LSP: Add Folder to Workspace
拼写检查标红了单词,但 Ctrl+Space 还是不弹窗?别混淆两套机制
拼写检查(spell_check)和代码提示(LSP / auto_complete)完全无关。前者只对标记英文单词,后者依赖语言服务器解析 AST 和符号表。你在 .py 文件里看到注释里的 recieve 被红线标出,不代表 LSP 就能给你补全 receive —— 它连这个单词是否存在都不关心。
最容易被忽略的一点:LSP 的补全触发还受作用域限制。比如光标落在字符串内部("hello <cursor>world"</cursor>),默认不会触发代码补全,只会触发文档内单词补全。此时 Ctrl+Space 弹出的是文件里出现过的单词,不是函数名或变量名。


















