VSCode悬浮提示(Hover)默认不支持复制,因其DOM禁用文本选择;可通过开发者工具临时绕过限制,或使用F12跳转定义处直接复制源码注释。

VSCode悬浮提示(Hover)本身不支持直接复制
Hover 是只读 UI,没有选中态、不响应鼠标右键、也不触发 Ctrl+C。它本质是渲染在编辑器上方的浮动面板,底层 DOM 被禁用文本选择(-webkit-user-select: none),所以哪怕你拖动鼠标也选不了文字。
但你可以用「开发者工具」临时绕过限制
这不是常规操作,但排查文档缺失或插件输出异常时很实用:
- 按
Ctrl+Shift+I(Win/Linux)或Cmd+Option+I(macOS)打开 DevTools - 切换到
Elements面板,按Ctrl+Shift+C(或点击左上角选择图标),然后鼠标悬停到 Hover 弹窗上点击 —— 它通常位于.monaco-editor-hover或.hover-row下 - 找到包含目标文本的
<div> 或 <code><span></span>元素,右键 →Copy→Copy element或Copy text - 粘贴后可能带多余换行或空格,建议用正则
\s+替换为单个空格清理 - 把光标停在符号上,按
F12(Go to Definition)跳转到声明处,文档注释通常就在上面 - 按
Ctrl+Click(Win/Linux)或Cmd+Click(macOS)同样可跳转,且跳转后注释可直接选中复制 - 对 TypeScript/JavaScript,
Ctrl+Space触发智能提示后,用方向键高亮某一项,Hover 会同步出现,此时再按Ctrl+K Ctrl+I(editor.action.showHover)可强制保持 Hover 面板展开,方便你切过去手动复制定义文件中的原始注释
更可靠的替代方案:查来源而非 Hover
Hover 内容几乎都来自语言服务器(LSP)或扩展提供的文档字符串。与其折腾复制,不如直接定位源码:
别忽略扩展行为差异
某些扩展(如 ES7 React/Redux/GraphQL/React-Native snippets)的 Hover 里嵌了可点击链接或按钮,这类内容根本没文本节点;而 Pylance 的 Hover 常含格式化后的类型签名,但换行符是 <br>,直接复制会丢结构。如果你发现 Hover 里有代码块,它大概率是用 <pre class="brush:php;toolbar:false;"><code></code> 渲染的 —— 这种情况用 DevTools 复制 <code>textContent</code> 比复制 <code>innerHTML</code> 更干净。</pre>


















