Sublime代码补全需同时满足Package Control正常工作、语言服务器可执行且路径正确、当前文件scope与配置严格匹配三条件;缺一则静默失效,无错误提示。

Sublime Text 的代码补全不是“装了 LSP 插件就自动好使”,它必须同时满足三个硬条件:Package Control 正常工作、语言服务器进程能被正确调起、当前文件的 scope 与配置严格匹配——缺一就会静默失效,连错误提示都不给。
右下角显示 Plain Text 或 Python 3?补全根本不会启动
这是最常被忽略的起点问题。Sublime 不看文件后缀,只认当前文件的语法识别结果(即 scope)。如果右下角显示的是 Plain Text、Python 3 或 source.python.django,LSP 客户端压根不会向服务器发任何请求。
- 手动切换语法:View → Syntax →
Python(不是Python 3),CSS 同理选CSS,不是CSS3或SCSS - 按
Ctrl+Alt+Shift+P(Windows/Linux)或Cmd+Alt+Shift+P(macOS)确认状态栏输出是否为source.python;若显示text.plain,说明语法没识别对,后续所有 LSP 配置都白搭 - 第三方插件(如 Anaconda)可能覆盖原生语法,临时禁用后再试
LSP-pyright 没出现在右下角?语言服务器根本没跑起来
右下角不显示 LSP: pyright 或类似标识,代表 LSP 客户端连通信桥都没建起来——不是插件问题,是后端服务缺失。
- 打开控制台(
Ctrl+`),搜索LSP或error,重点看是否有Failed to start server或spawn pyright ENOENT - 在终端手动运行配置里的
command数组(例如pyright --stdio),报command not found就得补PATH或改用绝对路径(Windows 注意写成C:/Users/xxx/pyright.cmd,别用单反斜杠) - Pyright 必须用
npm install -g pyright安装(不是pip),再用which pyright(macOS/Linux)或where pyright(Windows)取路径填进command字段
补全框弹出来了,但 Tab 键只插缩进?关键设置漏了
哪怕 LSP-pyright 已 active、补全项也列出来了,按 Tab 仍只插入缩进——这不是插件冲突,是 Sublime 默认禁用该行为。
- 必须在用户设置(Preferences → Settings 右侧)中显式启用:
"auto_complete_commit_on_tab": true(缺它等于没开补全) - 顺手加上:
"auto_complete": true和"auto_complete_with_fields": true(后者支持${1}类模板跳转) - 如果仍无效,临时禁用
AutoFileName或All Autocomplete——它们会劫持Tab行为
补全只有变量名,没参数、没 docstring?pyright 运行在“宽松模式”
pyright 默认不读项目配置,遇到空项目或结构不标准时自动降级,类型推导和签名提示直接消失。
- 项目根目录必须存在
pyrightconfig.json或pyproject.toml(哪怕空文件) - 用了虚拟环境?在
pyrightconfig.json中显式指定:{"pythonPath": "./venv/bin/python"}(macOS/Linux)或{"pythonPath": ".\venv\Scripts\python.exe"}(Windows) -
auto_complete_triggers要配对,比如:[{"selector":"source.python","characters":"."}];注意selector必须是source.python,不是text.python或python
真正卡住人的从来不是“怎么装”,而是三处隐性依赖同时对齐:作用域识别、服务器可执行、触发器生效。任一环节错位,补全就静默哑火,而 Sublime 偏偏不报错——你得靠 Ctrl+Alt+Shift+P 看 scope、靠控制台搜 error、靠终端手动跑 command,才能把问题钉死在具体哪一环。


















