VSCode类名悬停文档需注释规范、语言服务就绪且无插件干扰;检查tsconfig/jsconfig存在、JSDoc/docstring格式正确、语言模式匹配及禁用AI插件。

VSCode 不能直接“自定义类名悬停文档”的内容,但能精准控制它显示什么——关键在类定义上方的注释格式、语言服务是否就绪、以及有没有插件静默覆盖。
类名悬停不显示 JSDoc/docstring?检查这四点
光标悬停在 class MyClass 上只显示签名、不出现文档,不是 hover 被关了,而是语言服务器没解析出语义。常见断点:
- TS/JS 类文件缺失
jsconfig.json或tsconfig.json(哪怕空文件也必须存在) - 类定义上方的 JSDoc 没紧贴:中间隔了空行,或用了
//单行注释而非/** */ - Python 类的 docstring 不是 Google/NumPy 风格,比如漏掉
Args:、Attributes:或Raises:字段 - 右下角语言模式显示为
Plain Text而非TypeScript或Python,Pylance/TSServer 根本没加载
JSDoc 和 docstring 的写法差异与生效条件
不同语言对注释结构敏感,格式错一个字符,hover 就不渲染文档部分:
- JavaScript/TypeScript:
/** */必须紧贴class关键字上方,不能有空行;@param对类无效,改用@property描述实例属性,@template描述泛型 - Python:
"""docstring 必须顶格写在class行下方;Pylance 只认 Google 风格(Args:、Attributes:)和 NumPy 风格(分段式),自由文本会被忽略 - 修改后必须保存文件——VSCode 不监听未保存变更,LSP 不会重新解析
- 状态栏右下角图标停止旋转前,hover 内容不会更新,等几秒再试
AI 插件正在劫持你的类悬停提示
GitHub Copilot、Sesame AI 等扩展常静默替换原生 hover 返回值,且不报错、不提示。如果你确认注释和配置都对,但悬停始终只显示简略签名或 AI 生成内容:
- 临时禁用所有 AI 类扩展
- 执行
Developer: Reload Window(不是关闭重开) - 再测试悬停,若恢复正常,说明是插件冲突
- 别急着删插件——可单独为 Python/TS 文件禁用 Copilot:
"github.copilot.enable": { "python": false, "typescript": false }
想加外部文档或运行时信息?只能靠扩展开发
95% 的类文档需求靠规范注释就能满足。真要注入非静态内容(比如该类在生产环境的配置项、依赖的 API 响应示例、UML 图 base64 编码),必须写扩展:
- 注册
vscode.languages.registerHoverProvider,指定语言 ID(如typescript) -
provideHover返回的vscode.Hover支持MarkdownString,但isTrusted = true才能渲染图片或链接 - 切忌在
provideHover里做 HTTP 请求或磁盘读取——会卡住整个 hover 响应 - 相对路径如
./docs/myclass.md不被支持,所有资源必须转成 data URL 或内联 Markdown
最易被忽略的是:类悬停文档不是“设置开关”,而是“注释 + 语言服务 + 无干扰环境”三者同时成立的结果。少一个环节,就退回默认签名显示。


















