sublime text启用lsp需同时满足三条件:package control已安装并重启生效、语言服务器可执行且路径正确、当前文件scope与配置中scopes/syntaxes严格匹配;缺一则静默失效,无错误提示。

Sublime Text 要在日常业务开发中真正用上 LSP 补全、跳转、悬停这些能力,不是装完插件就完事——它必须同时满足三个硬性条件:Package Control 已安装且生效、语言服务器进程能被 Sublime 成功 spawn、当前文件的 scope 和配置中的 scopes/syntaxes 完全匹配。缺一即静默失效,连错误提示都不会弹。
Package Control 没装好,后面全白搭
这是 90% 配置失败的起点。按 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS)输入 Package Control: Install Package,如果命令不出现,说明 Package Control 根本没装。
- 打开
View → Show Console,粘贴官方安装脚本(含哈希校验),回车执行 - 执行完必须重启 Sublime,否则新插件无法加载
- 重启后再次按
Ctrl+Shift+P验证命令是否可触发
LSP 插件装了但右下角不显示 LSP-pyright active
这表示语言服务器根本没启动。LSP 插件本身不提供任何补全逻辑,它只是个通信桥;没连上服务器,补全菜单里就只有你打过的变量名。
- 先确认右下角语法显示是
Python(不是Python 3或Plain Text),按Ctrl+Alt+Shift+P看状态栏是否输出source.python - 打开控制台(
Ctrl+`),搜索LSP或error,重点看有没有Failed to start server或spawn pyright ENOENT - 在终端手动运行配置里的
command数组(如pyright --stdio),报command not found就得补PATH或改用绝对路径
auto_complete_commit_on_tab 没开,Tab 永远只插缩进
补全弹窗出来了,但按 Tab 不确认、. 后没反应——这不是服务器问题,是 Sublime 默认禁用该行为。
-
"auto_complete_commit_on_tab": true必须加进用户设置(Preferences → Settings右侧),否则Tab永远只插缩进 -
"auto_complete_triggers"要显式声明,例如:[{"selector":"source.python","characters":"."}];注意selector必须是source.python,不是text.python或python - 如果用了
AutoFileName或All Autocomplete,它们会劫持Tab行为,临时禁用测试是否冲突
Pyright 启动成功但补全只有变量名,没参数、没 docstring
这是 Pyright 运行在“宽松模式”下的典型表现,类型推导直接降级。它默认不读项目配置,也不感知虚拟环境。
- 用
npm install -g pyright安装(不是pip),再用which pyright(macOS/Linux)或where pyright(Windows)取绝对路径填进command字段 - 项目根目录必须存在
pyrightconfig.json或pyproject.toml(哪怕空文件),否则以宽松模式运行 - 如果用了虚拟环境,
pyrightconfig.json里要显式指定 Python 路径:{"pythonPath": "./venv/bin/python"}(macOS/Linux)或{"pythonPath": ".\venv\Scripts\python.exe"}(Windows)
最常被忽略的是 Sublime 的语法识别机制——它不看文件后缀,只认当前文件的 syntax 和 scopes,而这两者又极易被第三方插件(比如 Anaconda、Jedi)干扰。验证时建议先禁用所有非必要插件,从干净状态开始排查。











