VSCode的Peek功能包含Peek Definition、Peek Type Definition和Peek References三个独立操作,不支持定义与引用同时显示;Alt+F12/⌥+F12触发内联预览,F12为跳转;Peek窗口代码不可编辑但可F12跳转。

VSCode 的 Peek 功能本身不直接“查看引用关系”,它只支持 Peek Definition(查看定义)和 Peek Type Definition(查看类型定义),而“查看引用”对应的是 Peek References——这是三个独立但常被混用的操作。别指望一次弹窗里同时看到定义 + 所有引用,它们是分开触发的。
如何正确触发 Peek Definition 而不是跳转到定义
默认快捷键 Alt+F12(Windows/Linux)或 ⌥+F12(macOS)会打开内联的定义预览框,而不是离开当前文件。如果按了却跳走了,说明你误触了 F12(那是 Go to Definition,不是 Peek)。另外,右键菜单里要选 “Peek definition”,不是 “Go to definition”。鼠标悬停时出现的悬浮提示不算 Peek,它不支持交互式代码跳转或编辑。
为什么 Peek References 有时显示 “No references found”
常见原因有这几个:
- 项目没启用 TypeScript 语言服务,或 JS/TS 文件没正确识别为模块(比如缺少
jsconfig.json或tsconfig.json) - 变量是局部作用域(如函数内
const x = 1),且未被闭包外使用——VSCode 默认不分析跨函数的动态引用 - 用了动态属性访问(如
obj[key])、eval、new Function,静态分析无法覆盖 - 引用在未打开的文件中,且该文件未被 TS 语言服务索引(比如放在
node_modules或忽略路径里)
Peek 和 Go To 的性能与适用场景差异
Peek Definition 快、轻量,适合快速确认某行调用的函数长什么样,改完还能立刻回到原位置;Go to Definition 更适合深度跟进逻辑,尤其配合 Ctrl+U(返回上一处)来回跳转。Peek References 显示的是只读列表,不能直接编辑引用处——想批量改就得先 Shift+F12(Open References)再操作。注意:大型项目里 Peek References 可能延迟半秒以上,这不是卡,是语言服务器在过滤和排序结果。
真正容易被忽略的是:Peek 窗口里的代码不可编辑,但你可以把鼠标移到预览区任意位置,按 F12 直接跳过去——这个组合技很少有人意识到。










