ctrl+hover 是鼠标悬停触发的自动预览机制,依赖语言服务器就绪和光标准确落在标识符上;ctrl+k ctrl+i 是手动唤出文档的可靠方式,不依赖鼠标位置,仅需光标在有效符号内。

Ctrl+Hover 不是快捷键,而是触发条件
VSCode 里所谓“变量类型预览”和“即时文档查看”,本质不是靠按某个组合键启动的,而是鼠标悬停(Ctrl+Hover)自动触发。这个行为依赖两个前提:语言服务器已就绪、且光标精准落在标识符上(比如变量名、函数名、类名),不能停在空格或标点后。
常见错误现象:
- 悬停没反应 → 对应语言扩展未安装或未激活(如 Python 需
python扩展,TypeScript 需内置 TS 语言服务) - 只显示类型,不显示文档注释 → 源码未提供 JSDoc/Google Style docstring,或扩展未解析注释块
- 悬停后弹窗一闪即逝 → 鼠标轻微抖动导致 hover 中断;可稍作停顿再试
Ctrl+K Ctrl+I 是手动唤出文档的保底方案
当悬停失效或想主动查看时,Ctrl+K Ctrl+I(Mac 上是 Cmd+K Cmd+I)是唯一可靠的手动触发方式。它不依赖鼠标位置,只要光标落在有效符号内(哪怕只是字母中间),就能拉出完整类型签名 + 文档摘要。
使用场景注意点:
- 适用于所有支持语言服务器的语言(Python、TS、JS、Rust、Go 等),但对纯文本或未配置语法的语言无效
- 若弹窗为空,大概率是语言服务器未加载完成,可观察右下角状态栏是否显示“Initializing JS/TS language features…”
- 该命令不会跳转,只预览;想跳转定义请用
F12或Ctrl+Click
类型提示和文档内容受语言扩展配置影响
同一段代码,在不同扩展配置下,悬停内容可能差异很大。比如 Python 中:
- 用官方
python扩展 + Pylance,能显示类型推导、参数说明、返回值、甚至第三方包的 stub 信息 - 只装了旧版
python扩展(无 Pylance),可能只有基础类型,无参数文档 - 启用了
"python.analysis.typeCheckingMode": "basic",类型检查更严格,悬停时会多出类型冲突警告
JavaScript/TypeScript 项目中,若 jsconfig.json 或 tsconfig.json 缺失,悬停可能只显示 any 而非具体类型。
预览窗口里的交互操作容易被忽略
悬停弹出的预览框不只是静态文本——它支持有限交互:
- 点击类型中的类名、接口名,会跳转到其定义(等效于
F12) - 按住
Ctrl(Mac 是Cmd)再悬停,可临时禁用跳转,避免误触 - 预览框右上角有三个点,点击可“复制签名”或“在问题面板中显示”,但这个菜单常被忽略
- 如果文档过长,预览框默认只显示前几行;滚动条极细,需仔细找或拖动鼠标滚轮
真正麻烦的是嵌套类型——比如 Promise<array number name: string>></array>,VSCode 默认折叠中间层,得手动点击“展开”才能看到完整结构,这点不点开几乎没人知道。











