LSP插件仅为通信管道,需配合pyright等语言服务器才能工作;右下角无LSP标识时应检查文件类型识别、服务器启动日志及command路径是否正确;pyright需绝对路径且注意.cmd后缀;TS/JS需tsconfig.json及tsdk配置;Python需pyrightconfig.json启用标准模式。

LSP 插件本身不提供任何语言能力,装完就期待补全、跳转、悬停——这步直接走错。它只是个通信管道,真正干活的是 pyright、typescript-language-server、clangd 这类独立进程。没它们,LSP 就是空壳。
右下角没显示 LSP: pyright?先查三件事
这是最直观的“服务器未启动”信号,别重装插件,盯住这三个点:
- 按
Ctrl+Alt+Shift+P(Windows/Linux)或Cmd+Alt+Shift+P(macOS),看状态栏输出是否为source.python;若显示text.plain,说明 Sublime 根本没识别文件类型,后续所有配置都会被忽略 - 打开控制台(
Ctrl+`),搜LSP或error,重点找Failed to start server: exit code 1或spawn pyright ENOENT—— 后者意味着路径根本不存在 - 把配置里的
command数组完整粘贴到终端执行,例如pyright --stdio;报command not found就得补PATH,或改用绝对路径
pyright 配置必须写绝对路径,["pyright", "--stdio"] 几乎必挂
全局安装的 pyright 是 npm 包,Sublime 的子进程环境通常不继承 shell 的 PATH。写相对名等于让 LSP 去猜,而它从不猜。
- 在终端运行
which pyright(macOS/Linux)或where pyright(Windows),拿到完整路径,如/usr/local/bin/pyright或C:UsersXXXAppDataRoaming pmpyright.cmd - Windows 用户注意:
.cmd后缀不能省,否则spawn ENOENT - 路径含空格时(常见于 Windows 用户目录),整个字符串必须用双引号包裹:
"C:/Users/My Name/AppData/Roaming/npm/pyright.cmd" - 如果项目用了虚拟环境,
pyright默认不感知 venv;必须在项目根放pyrightconfig.json,显式指定{"pythonPath": "./venv/bin/python"}(macOS/Linux)或{"pythonPath": ".\venv\Scripts\python.exe"}(Windows)
TS/JS 补全卡顿、JSX 不识别?问题不在 LSP,而在 tsserver 没加载上下文
typescript-language-server 依赖 tsserver,而 tsserver 必须读到 tsconfig.json 才能建立完整语义模型。没它,连 React.FC 都可能标红。
- 项目根必须存在
tsconfig.json,哪怕只写{};否则tsserverfallback 到全局扫描,耗时翻倍 -
command字段不能只写["typescript-language-server", "--stdio"];要加initializationOptions显式告诉它tsdk路径:{"typescript.tsdk": "./node_modules/typescript/lib"} -
jsx支持依赖tsconfig.json中"jsx": "preserve"或类似设置;路径别名(paths)也必须在该文件中正确定义 - 改完
tsconfig.json后,必须手动执行LSP: Restart Servers;LSP 不会自动监听配置变更
Python 补全只有变量名?你正运行在 pyright 的“宽松模式”
没 pyrightconfig.json 或 pyproject.toml,pyright 就默认以宽松模式启动:跳过类型检查、不读 venv、不解析 py.typed,补全只剩名字。
- 项目根放一个空的
pyrightconfig.json文件,就能强制它进入标准模式 - 在该文件里加
{"include": ["src", "app"], "exclude": ["tests", "migrations"]},避免首次跳转时扫完整个venv - 禁用 stub 优先可提速:
{"useLibraryCodeForTypes": false},防止跳进site-packages/requests/py.typed - 如果用了
conda环境,pythonPath得指向 conda 的python可执行文件,不是venv路径
syntax 和 scopes,而这两者极易被第三方插件干扰;pyright 和 tsserver 的冷启动行为无法绕过,但可以靠配置收敛范围来压低延迟;路径写错、后缀漏写、配置放错文件——这些不是“可能出错”,而是几乎必然出错。


















