lsp插件无提示的根本原因是语言服务器未启动,需确认文件scope是否正确、控制台有无启动错误、command路径能否手动执行。

LSP插件装了但没补全、没跳转、没悬停提示?不是插件坏了,是语言服务器根本没启动成功——LSP本身不带任何语言能力,所有“失效”都指向后端服务缺失、路径错误或作用域不匹配。
为什么右下角不显示LSP-pyright或LSP-clangd,且Ctrl+Shift+Space没反应
这是最明确的“服务器未启动”信号。别重装插件,先确认三件事:
- 按
Ctrl+Alt+Shift+P(Windows/Linux)或Cmd+Alt+Shift+P(macOS),看状态栏输出是否含source.python、source.c或source.ts;若显示text.plain,说明 Sublime 没识别文件类型,后续所有 LSP 配置都会被忽略 - 打开控制台(
Ctrl+`),搜索LSP或error,重点看有没有Failed to start server: exit code 1(命令执行失败)或spawn pyright ENOENT(路径根本找不到) - 检查配置里的
command数组能否手动运行:在终端粘贴整个数组(如pyright --stdio),报command not found就得补 PATH 或改用绝对路径
Python 补全只有变量名,不显示类型和 docstring
默认 pylsp 功能有限,pyright 是更优解,但它行为高度依赖项目配置:
- 必须用
npm install -g pyright安装(不是 pip),再用which pyright(macOS/Linux)或where pyright(Windows)取绝对路径填进command字段;写成["pyright", "--stdio"]在多数环境会失败 - 项目根目录必须存在
pyrightconfig.json或pyproject.toml(哪怕空文件),否则它以“宽松模式”运行,类型推导直接降级 - 如果用了虚拟环境,
pyright默认不感知 venv,需在pyrightconfig.json显式指定:{"pythonPath": "./venv/bin/python"}(macOS/Linux)或{"pythonPath": ".\venv\Scripts\python.exe"}(Windows)
Clangd 对 C/C++ 补全失效,printf 都不提示
根本原因是 clangd 没读到 compile_commands.json 编译数据库,不是插件或语法问题:
- 终端运行
clangd --version确认命令可用;macOS 若用 Homebrew,需确保/opt/homebrew/bin(Apple Silicon)或/usr/local/bin(Intel)在系统 PATH,并在 LSP 设置中显式配"path"字段让 Sublime 继承 -
clangd不靠后缀猜函数签名,它靠编译数据库知道你实际怎么调用 gcc、开了哪些宏、包含路径在哪;没有compile_commands.json,连malloc都可能补全不出来 - CMake 项目加
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON重新生成构建目录,把生成的compile_commands.json复制到项目根目录(不是build/下);手工编译项目可装compiledb(pip install compiledb),再运行compiledb -n gcc main.c生成
Tab 键不提交补全项,只插缩进
这是最常被忽略的一条设置:Sublime 默认禁用 Tab 确认补全。哪怕 LSP 已跑起来、补全框也弹出来了,按 Tab 依然只进缩进。
- 必须在用户设置(
Preferences → Settings (User))里显式启用:"auto_complete_commit_on_tab": true - 顺手加上
"auto_complete_with_fields": true,能让${1}类代码片段支持 Tab 跳转 - 如果仍无效,临时禁用
AutoFileName或All Autocomplete——它们会劫持 Tab 行为
真正卡住人的从来不是“怎么配”,而是“为什么没反应”——LSP 日志(Preferences → Package Settings → LSP → Toggle Log Panel)里那行 Starting: clangd 或 Failed to start server 才是唯一可信线索。其他都是干扰项。











