VSCode 默认不支持图片悬浮预览,editor.hover.enabled 仅控制代码语义提示;需安装 Image Preview 插件实现本地、相对及 HTTP 图片路径的悬停预览,自定义 hover 需编写扩展并处理绝对 URI 路径。

VSCode 默认不支持图片或自定义内容的悬浮预览,所谓“鼠标悬浮预览模式”必须分两类理解:一类是内置的代码语义悬浮(hover),另一类是需插件实现的图片/链接预览。直接改设置开不了图片悬停,必须装插件或写扩展。
为什么 editor.hover.enabled 开了却看不到图片预览
这个设置只控制「语言服务器提供的代码提示」是否显示,比如函数参数、类型、JSDoc。它对 https://example.com/logo.png 或 ./assets/icon.svg 这类路径完全无效——VSCode 内置不解析图片 URL,也不渲染图像。常见错误现象:
- 在 CSS 的
background-image: url(...)里悬停,只看到字符串字面量,没图 - JS 中写
const img = "avatar.jpg",悬停只显示字符串值,不是缩略图 - 误以为开启
editor.hover.enabled就能预览一切,结果全是空白
想看图片悬停预览?装 Image Preview 插件
这是目前最稳定、无需配置即用的方案,支持本地路径(./img/a.png)、相对路径(../icons/b.svg)、HTTP/HTTPS 链接(https://i.imgur.com/xxx.jpg)三类场景:
- 打开扩展面板(
Ctrl+Shift+X),搜Image Preview,安装并重启 VSCode - 确保文件是被识别为对应语言模式:CSS/SCSS 文件中 URL 要在
url()里;JS/TS 中建议写成模板字符串或带注释标记,如/* @image */ "./logo.png" - 插件默认启用,无需额外设置;若不生效,检查右下角语言模式是否为
css、javascript等,而非Plain Text - 不支持 base64 图片字符串(
data:image/png;base64,...),这类需手动解码或另寻扩展
自定义 hover 显示图片?得写扩展,但别硬刚
如果你真要让某个变量、注释或正则匹配到的 URL 触发图片预览,必须注册 vscode.languages.registerHoverProvider。但要注意几个现实约束:
- 必须指定语言 ID(如
"typescript"),不能写"ts"或通配符 - 返回的
vscode.Hover只接受MarkdownString,图片得转成格式,且路径必须是绝对 URI(file://协议) - 本地相对路径需手动拼成完整路径:
vscode.Uri.joinPath(vscode.workspace.rootPath, "img/logo.png") - HTTP 图片受限于 CORS 和 VSCode 安全策略,
isTrusted: true也未必能加载,多数情况会失败 - 每次修改代码后必须保存文件,hover 内容才刷新——改了正则或路径逻辑却不保存,预览不会更新
真正容易被忽略的是:图片预览能力跟「语言服务就绪状态」无关,但跟「路径能否被正确解析」强相关。一个 ./assets/icon.png 在根目录下有效,在子文件夹里可能就 404;而插件内部的路径解析逻辑往往比你手动写的更健壮。别为了省一个插件去重造轮子。


















