sublime text 悬停文档需同时满足:lsp 插件已安装、语言服务器运行中、“show_hover”: true 已启用、文件语法识别正确(如 source.python),缺一不可。

悬停文档(Hover)在 Sublime Text 中默认不生效,必须同时满足四个条件:LSP 插件已安装、对应语言服务器运行中、“show_hover”: true 已启用、当前文件语法识别正确。
为什么鼠标悬停没反应?检查 show_hover 和语法识别
Sublime 原生不支持悬停文档,LSP 是唯一可靠路径。但即使装了 LSP,show_hover 默认是 false,必须手动打开:
- 打开
Preferences → Package Settings → LSP → Settings - 在用户设置(右侧)中添加:
"show_hover": true - 确认当前文件右下角显示的是
Python、TypeScript等真实语法,不是Plain text—— 否则 LSP 客户端根本不会发请求 - 按
Ctrl+Alt+Shift+P可查看当前 view 的语法范围,比如应为source.python,若返回空或text.plain,说明语法未绑定
LSP 悬停依赖语言服务器,不是所有 server 都默认支持 hover
hover 是 Language Server 协议中的 textDocument/hover 方法,但部分轻量 server(如旧版 pylsp)可能禁用它,或需显式开启:
- Pyright 用户:确保已通过
pip install pyright安装,且 LSP 配置中"command"能正确调起pyright-langserver - Clangd 用户:默认关闭 hover,需在 LSP 配置里加
"initializationOptions": {"clangd": {"completion": {"detailedLabel": true}}}类扩展项(具体以 clangd 文档为准) - 状态栏左下角出现
pyright: ready或tsserver: idle才代表服务就绪;若只显示LSP无具体名字,说明客户端连上了但 server 没启动成功
悬停内容为空、乱码或延迟高?重点查这三处
内容缺失通常不是配置漏了,而是信息链断在某环:
- 光标落在字符串、注释或未解析的 import 路径里 —— hover 只对“有效符号”触发,
requests.get("https://")中的get不会被识别为函数调用 - 第三方库没类型存根(stub),比如 pandas 函数悬停只显示
def foo(...),补上pip install types-pandas就能显示参数和返回值 - 悬停框宽度被截断:在 LSP 设置中加
"popup_max_characters_width": 120;中文乱码可尝试设"minihtml_font_face": "Monaco"(需字体存在)
快捷键触发 hover?别试了,它没有全局快捷键
LSP 的 hover 是纯悬停机制,不响应快捷键。有人误配 peep_definition 或 lsp_symbol_definition 想强行弹出,结果要么报错,要么弹的是定义跳转窗口而非文档浮层:
-
peep_definition是原生命令,只显示简单符号定义(同文件内def),不带类型/文档/源链接 -
lsp_symbol_definition是 LSP 插件注册的跳转命令,行为等价于 Ctrl+Click,不是 hover - 真要“主动唤出”,唯一办法是把光标移到符号上,稍作停顿(默认
hover_delay_ms是 300ms),或临时调高该值加快响应
hover 表面是鼠标悬停,背后是语法识别 + 语言服务器索引 + 类型系统覆盖三重校验。少一环,就只剩一个空框。最常被忽略的是:新建未保存的 Python 文件,pyright 根本不索引它,悬停自然失效——先保存,再看效果。











