lsp插件无补全跳转悬停空白,是因为语言服务器未启动或错配;需确认右下角显示lsp: pyright等、scope为source.python、控制台无failed日志、command可手动执行且路径正确。

装了 LSP 插件却没补全、没跳转、悬停空白?不是插件坏了,是语言服务器压根没启动——LSP 客户端只是个通信管道,不带任何语义能力,所有功能失效都指向后端服务缺失或错配。
怎么确认 LSP 插件连上了语言服务器
右下角状态栏必须显示 LSP: pyright 或 LSP: typescript 才算真正连通。如果只显示 LSP: ready 或干脆没反应,说明服务器进程根本没起来。
- 按
Ctrl+Alt+Shift+P(Windows/Linux)或Cmd+Alt+Shift+P(macOS)看当前文件 scope:必须是source.python、source.ts等有效值,不是text.plain - 打开控制台(
Ctrl+`),搜索LSP或error,重点找Failed to start server: exit code 1或spawn ENOENT - 在终端里手动运行配置里的
command数组,比如pyright --stdio,报command not found就得补 PATH 或改用绝对路径
Python 补全只有变量名,不显示类型和 docstring
这是 pyright 启动在“宽松模式”下的典型表现,它默认不读项目配置,类型推导直接降级。
- 项目根目录必须存在
pyrightconfig.json或pyproject.toml(哪怕空文件) - 如果用了虚拟环境,
pyrightconfig.json里要显式指定 Python 路径:{"pythonPath": "./venv/bin/python"}(macOS/Linux)或{"pythonPath": ".\venv\Scripts\python.exe"}(Windows) -
command字段不能只写["pyright", "--stdio"]:全局安装的 pyright 是 npm 包,必须用npm install -g pyright,然后用which pyright取绝对路径填进去
typescript-language-server 补全卡顿、JSX 不识别
问题不在 LSP 插件,而在 tsserver 没加载到你项目的 tsconfig.json,或者加载了但找不到 TypeScript 运行时。
- 必须在项目根运行
npm install typescript --save-dev(即使你用 pnpm/yarn,也得有这个依赖) - 配置里不能只写
["typescript-language-server", "--stdio"],要加initializationOptions显式告诉它 tsdk 路径:{"typescript.tsdk": "./node_modules/typescript/lib"} -
jsx支持依赖tsconfig.json中"jsx": "preserve"或类似设置;路径别名(paths)也必须在该文件中正确定义
为什么改了配置还是没反应
最常被忽略的是 Sublime 的语法识别机制——它不看文件后缀,只认当前文件的 syntax 和 scopes,而这两者又极易被第三方插件干扰。
-
syntaxes字段必须严格匹配 Sublime 4+ 的新路径:Packages/Python/Python.sublime-syntax,不是旧版.tmLanguage - 如果装了 Anaconda、SublimeCodeIntel 等插件,它们会覆盖原生语法定义,导致 scope 变成
source.python.django等变体,此时scopes也得同步写全 - Windows 用户写绝对路径时,
command里的反斜杠必须双写("C:\Users\me\go\bin\gopls")或全用正斜杠("C:/Users/me/go/bin/gopls"),单反斜杠会被 JSON 解析器吃掉











