VSCode悬停链接仅支持https://绝对URL和command:协议;相对路径、file://、vscode-resource:均无效且静默失败。command:链接需满足三条件:package.json声明、registerCommand一致、用vscode.MarkdownString(true)包裹。

悬停链接点不动,基本就是协议或构造方式错了
VSCode 的 vscode.Hover 只认两类可点击链接:https:// 绝对 URL 和 command: 协议。相对路径(如 ./readme.md)、file://、vscode-resource: 全部静默失效——不报错、不提示、点了没反应,这是最常被忽略的“假链接”陷阱。
https:// 链接打不开?先确认系统默认浏览器是否注册正常
VSCode 本身不打开浏览器,它调用系统命令:start(Windows)、open(macOS)、xdg-open(Linux)。如果这些命令在终端里都打不开网页,问题一定在系统层:
- 在终端手动运行
open https://example.com(macOS)或start https://example.com(Windows),验证底层是否通畅 - Windows 用户注意:QQ、迅雷等软件可能劫持
http协议注册,导致start调用失败且无提示 - macOS 用户若用
brew install --cask firefox安装 Firefox,需手动设为默认浏览器,否则open会 fallback 到 Safari,而 Safari 若被禁用就彻底静默 - Live Server 插件中若设置了
liveServer.settings.NoBrowser: true,也会屏蔽所有自动打开行为
command: 链接无效?三个条件缺一不可
一个 command: 链接要真正可点,必须同时满足:
-
package.json的contributes.commands中已声明该命令 ID -
vscode.commands.registerCommand()注册时用的 ID 与声明完全一致(大小写、拼写、命名空间) - 链接文本必须用
new vscode.MarkdownString('[文本](command:myExtension.doSomething)', true)构造,且第二个参数为true启用解析
漏掉任意一条,链接就只是灰色文字,看着像超链接,点下去毫无反应。
想点开本地文件或图片?别直接放 file:// 链接
本地路径无法通过悬停链接直接打开。可行路径只有两条:
- 把文件托管到本地 HTTP 服务(如 Live Server),用
https://或http://127.0.0.1:5500/path/to/file.md链接 - 用
command:链接触发自定义命令,在命令逻辑里调用vscode.env.openExternal()或vscode.workspace.openTextDocument();注意openExternal对file://在 macOS 上限制极严,优先走 HTTP(S)
真正容易被忽略的是:悬停内容是静态快照,不会随文件变更实时更新——改了 JSDoc 或注释后,必须保存文件,Hover 才会重新解析并生效。











