Image Preview插件悬停预览失效主因是路径、光标位置或文件类型不满足硬性要求:路径须以./开头,光标需落在路径字母内,.js/.ts文件需手动添加supportedLanguages配置,且image-preview.enableHoverPreview必须为true。

VSCode 悬浮提示本身不支持直接显示本地图片,必须依赖插件(如 Image Preview)并正确配置路径与开关,否则 hover 时只会显示文字或空白。
Image Preview 插件的 hover 预览为什么没反应?
不是插件坏了,而是它对路径、光标位置和文件类型有硬性要求:
- 路径必须以
./开头(例如./images/logo.png),assets/logo.png或/images/logo.png均无效 - 光标必须落在路径字符串的字母/数字内部(比如
logo.png的l或g上),停在引号、括号或空格里不触发 - 默认只支持
.md、.html、.css、.vue等文件类型;若要在.js或.ts中生效,需手动添加配置:"image-preview.supportedLanguages": ["javascript", "typescript"] -
image-preview.enableHoverPreview必须为true(检查设置里是否被其他插件覆盖或误关)
base64 或网络图片能塞进 hover 里吗?
可以,但仅限于自定义插件开发场景,且限制极多:
- 用
vscode.MarkdownString构造,写成格式 - SVG 必须满足:
viewBox="0 0 16 16"、无width/height、单色、base64 编码后不能含换行 - 绝对 URL(如
https://example.com/icon.svg)可直接渲染,但file://和相对路径一律失败 - 别在
provideHover里同步读取大图文件——会卡住悬停,必须用fs.promises.readFile+Promise.resolve异步返回
为什么悬停里点不开图片链接?
VSCode 的 hover 只允许点击两类链接:https:// 和 command:,其他全部静默失效:
-
—— 看起来像图,实为纯文本,无法点击 - 想实现“悬停看图 + 点击打开”,得拆开:用 Markdown 渲染 base64 图用于预览,再额外加一个
[打开](command:myExtension.openImage)链接 -
command:链接要能点,必须同时满足:命令 ID 在package.json的contributes.commands里声明、registerCommand已执行、构造时用new vscode.MarkdownString(text, true)
真正容易被忽略的是:hover 预览不是全局能力,它严格绑定语言模式、路径格式和插件配置三者。哪怕只错一个点(比如少了个 . 或光标偏了 1px),就彻底不显示——没有报错,也不提示,只能靠逐项排查。











