lsp跳转无反应的主因是语言服务器未启动,需先通过lsp: show log确认日志中是否有starting或connected记录;若无,则检查path、插件安装、workspace根目录设置及stubs支持配置。

为什么 lsp_goto_definition 没反应?先查服务是否真在跑
跳转失效最常见原因不是配置错,而是 LSP 服务器压根没启动成功。Sublime Text 不会主动报错,只静默失败。
打开命令面板(Ctrl+Shift+P / Cmd+Shift+P),输入 LSP: Show Log,看输出里有没有类似 Starting [pylsp]... 或 Connected to server 的日志。如果只有 Failed to start 或压根没日志,说明服务未就绪。
- 检查
PATH是否包含对应语言服务器二进制(如pylsp、typescript-language-server) - 确认已安装对应插件:LSP(主插件) + LSP-
language-name(如LSP-pyright) - Python 项目建议用
pyright而非pylsp,后者默认不启用语义跳转,需手动开"capabilities": {"definitionProvider": true}
如何让 goto_definition 支持 .pyi 文件和 stubs?
默认情况下,多数 Python LSP 服务器(包括 pyright)不会自动索引 .pyi 文件,导致跳转到类型定义失败,尤其在使用 numpy、requests 等带 stubs 的库时。
在项目根目录的 lsp-json 配置中(.sublime-project 或 LSP-pyright.sublime-settings),显式启用 stubs 支持:
{
"settings": {
"pyright": {
"include": ["**/*.py", "**/*.pyi"],
"stubPath": "./stubs",
"python": {
"extraPaths": ["./stubs"]
}
}
}
}
-
include告诉服务器扫描.pyi文件 -
stubPath和extraPaths是双保险:前者用于查找第三方 stubs(如types-requests),后者让解析器识别本地 stub 模块 - 若用
pip install types-requests,确保site-packages/types_requests/在extraPaths中,或设为相对路径并 symlink 进项目
LSP: Toggle Server Trace 开了但没看到请求细节?检查 trace 级别
开启 trace 后仍看不到 JSON-RPC 请求/响应体,大概率是 trace 级别太低。Sublime 的 LSP 插件默认只记录 messages,而定义跳转依赖的是 verbose 级别的 request 和 response 日志。
在全局或项目级 LSP 设置中强制提升:
{
"clients": {
"pyright": {
"enabled": true,
"settings": {"trace": "verbose"}
}
}
}
-
"trace": "messages"→ 只显示初始化、通知类日志 -
"trace": "verbose"→ 输出完整textDocument/definition请求 payload 和 server 返回的Location[] - 日志里若看到
"result": null,说明 server 找不到定义,此时应检查文件是否被include、是否在 workspace folder 内、是否有语法错误阻断语义分析
跨文件跳转失败?确认 workspace folder 是根目录,不是子目录
Sublime Text 的 LSP 客户端以“workspace folder”为边界做路径解析。如果把 src/utils.py 单独拖进窗口(而非整个项目文件夹),from myapp.core import run 中的 run 就无法跳转——因为 myapp/ 不在 workspace 内,server 根本不加载它。
- 正确做法:菜单栏
Project → Add Folder to Project…,选整个 Git 仓库或 Python 包根目录(含pyproject.toml或setup.py) - 验证方式:打开任意文件后,按
Ctrl+Shift+P输入LSP: Show Workspace Folders,确认路径完整且无截断 - 多根 workspace 要谨慎:不同 folder 可能触发多个 server 实例,造成定义冲突或跳转混乱;优先用单根 + 正确
extraPaths
textDocument/definition → server 解析 AST + 类型上下文 → 返回 URI + range → client 打开并定位。任一环节缺失路径、权限、语法合法性,都会静默失败。最常被忽略的是 workspace 边界和 stub 文件可见性——这两处没调对,其他配置再全也白搭。











