lsp插件生效需同时满足package control已安装、语言服务器command路径可执行、当前文件scopes与syntaxes严格匹配三条件;缺一则静默失效,无错误提示。

装了 LSP 插件不等于有代码分析能力,真正起作用的是语言服务器是否启动成功、command 路径能否执行、scopes 和 syntaxes 是否与当前文件完全匹配——三者缺一不可。
Package Control 没装,LSP 根本动不了
Sublime 默认没包管理器,Package Control: Install Package 命令调不出来,后面所有操作都会静默失败。按 Ctrl+Shift+P(Win/Linux)或 Cmd+Shift+P(Mac)输入该命令,能弹出列表才算就位。
如果提示 “command not found”,必须手动安装:
- 打开
View → Show Console - 粘贴官方安装脚本(含哈希校验),回车执行
- 重启 Sublime —— 这步不能跳,否则 LSP 插件加载不全
command 路径写错,LSP 就是哑巴
command 字段填错,语言服务器根本不会启动。终端里能跑,不等于 Sublime 能调用;PATH 里没有,配置里又没写绝对路径,就会卡在 ENOENT。
- Windows 上写
"C:\Users\me\AppData\Roaming\npm\pyright-langserver.cmd"会解析失败,得用双反斜杠或正斜杠:"C:/Users/me/AppData/Roaming/npm/pyright-langserver.cmd" - macOS/Linux 下运行
which pylsp或which typescript-language-server,失败就得填绝对路径,比如"/opt/homebrew/bin/pylsp" - Node.js 环境下,
command必须带--stdio,例如:["typescript-language-server", "--stdio"]
scopes 和 syntaxes 不对,LSP 根本不认这个文件
哪怕服务器进程跑起来了,如果文件的 scope 或语法不匹配,LSP 客户端连请求都不会发。这不是“没效果”,是压根没触发。
- 打开 .py 文件后按
Ctrl+Alt+Shift+P(Win/Linux)或Cmd+Alt+Shift+P(Mac),状态栏必须显示source.python;若显示source.python.django或text.plain,scopes就得写全 -
syntaxes必须指向 Sublime 4+ 自带语法:"Packages/Python/Python.sublime-syntax",不是旧版.tmLanguage - 用了 Anaconda、SublimeCodeIntel 等插件?它们常覆盖原生语法,建议临时禁用再试
Tab 键不确认补全,auto_complete_commit_on_tab 没开
很多人看到补全框弹出来了,但按 Tab 只插入缩进——这不是 LSP 的问题,是 Sublime 默认禁用该行为。没开这个开关,补全就是半残废。
- 用户设置里必须显式启用:
"auto_complete": true、"auto_complete_commit_on_tab": true(最关键)、"auto_complete_with_fields": true - 如果仍无效,检查是否被
AutoFileName或All Autocomplete劫持了 Tab 行为 - 改完设置后,建议用
Ctrl+Shift+P → LSP: Restart Servers刷新连接,别只靠重启编辑器
最常被忽略的一点:LSP 日志面板(LSP: Toggle Log Panel)里第一行报错,往往就是真实病因。别猜,先看它写了什么。











