必须逐项验证command路径、syntaxes和项目结构,缺一不可;先确认Package Control和LSP插件已就位并重启,再严格配置pyright绝对路径、scopes、syntaxes及项目配置文件。

Sublime Text 要真正用上 LSP,不是装完插件就完事——90% 的“没提示、跳转失败、右下角永远 Plain Text”问题,都卡在 command 找不到、syntaxes 写错、或项目结构缺失这三处。必须逐项验证,不能跳步。
确认 Package Control 和 LSP 插件已真正就位
这是所有后续操作的硬前提,跳过等于白干。
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Package Control: Install Package—— 能弹出菜单才算成功;如果报command not found,说明 Package Control 没装,必须先粘贴官方 Python 安装代码到控制台执行 - 装完 LSP 后务必重启 Sublime:部分系统不重启,插件根本不会加载,
LSP: Enable Language Server Globally命令都不可见 - 安装 LSP 时认准作者是
sublimelsp;别误装其他同名但非官方的包
Python 补全失效?重点查 pyright 启动路径和项目配置
pyright 是当前 Python 场景最稳的选择,但它对环境非常敏感,只写 ["pyright"] 几乎必挂。
-
command必须用绝对路径:which pyright(macOS/Linux)或where pyright(Windows)取到路径后填入,例如["/opt/homebrew/bin/pyright"];写成["pyright", "--stdio"]在多数环境会因 PATH 不一致而失败 - 项目根目录必须存在
pyrightconfig.json或pyproject.toml(哪怕空文件),否则 pyright 以“宽松模式”运行,类型推导直接降级,补全只剩变量名 - 若用虚拟环境,
pyrightconfig.json中需显式指定"pythonPath",路径要和实际 venv 结构严格匹配,比如"./venv/bin/python"(macOS/Linux)或".envScriptspython.exe"(Windows) - scope 和 syntax 必须同时匹配:
"scopes": ["source.python"]+"syntaxes": ["Packages/Python/Python.sublime-syntax"];旧版Packages/Python/Python.tmLanguage已失效
TS/JS 补全卡顿或 JSX 不识别?tsserver 路径和 tsconfig.json 缺一不可
typescript-language-server 不读文件后缀,它只认 tsconfig.json 和你给的 tsserver 绝对路径。
- Windows 用户注意:
command中的 tsserver 必须带.cmd后缀,例如["C:\Users\XXX\AppData\Roaming\npm\tsserver.cmd"];漏掉就报spawn ENOENT - 必须在项目根目录运行
npm install typescript --save-dev(即使你用 pnpm/yarn),否则tsserver找不到 TypeScript 运行时,悬停提示为空 -
tsconfig.json中需明确启用 JSX 支持:"jsx": "preserve"或"react-jsx";路径别名(paths)也得在这里定义,LSP 不会跨文件猜 - 不要在配置里写
initializationOptions字段——新版tsserver已废弃该字段,写了反而导致连接中断
C/C++ 补全连 printf 都不提示?clangd 根本没读到编译数据库
clangd 不靠后缀或函数名猜逻辑,它完全依赖 compile_commands.json。没这个文件,它连标准库头文件都可能解析不了。
- 终端运行
clangd --version确认命令可用;macOS Apple Silicon 用户需检查/opt/homebrew/bin是否在 PATH,并在 LSP 设置中显式加"path"字段继承 - CMake 项目务必加
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON重新生成构建目录,再把生成的compile_commands.json复制到项目根目录 - 非 CMake 项目可用
compiledb工具生成:pip install compiledb→compiledb make(或对应构建命令) - clangd 默认不递归扫描子目录,
compile_commands.json必须放在你用 Sublime 打开的那个文件夹(即项目根)下,放错一级就失效
最常被忽略的是 Sublime 的语法识别机制——它不看 .py 后缀,只认当前文件的 scope 和 syntax。而这两个值极易被 Anaconda、SublimeCodeIntel 等插件覆盖或干扰,一旦冲突,LSP 配置直接被跳过。动手前先关掉所有疑似干扰插件,用 Ctrl+Alt+Shift+P 看一眼 scope 是不是 source.python,比重装十遍都管用。


















