vscode 的 ctrl+click 无法点击 jsdoc 中的官方文档链接,因语言服务不解析 {@link url} 等语法,且编辑器默认不激活注释内 url 跳转;推荐安装 markdown-links 扩展支持 和 [text](url) 格式一键跳转。

VSCode 的 Ctrl+Click 为什么点不开官方文档链接?
默认情况下,VSCode 不会把函数或类型声明里的文档注释(比如 JSDoc 中的 @see、@link)自动转成可点击的跳转链接——哪怕注释里写了 {@link https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API},它也只当纯文本渲染。
根本原因在于:VSCode 的语言服务(如 TypeScript Server 或 JS SDK)不解析或不激活这类 Markdown 链接语法;编辑器本身也不主动抓取注释中的 URL 并挂载跳转行为。
- 只有部分扩展(如
Document This或TS Importer)会增强注释解析,但它们不负责链接跳转 -
Ctrl+Click只响应符号定义位置(Go to Definition),不是文档链接 - TypeScript 的
/** @see {@link URL} */会被识别为文档内容,但不会生成 HTML<a></a>标签
用 markdown-links 扩展让 JSDoc 链接真正可点击
目前最轻量、稳定生效的方案是安装 markdown-links 扩展(作者:fabiospampinato)。它会在编辑器内监听 Markdown 风格的链接语法,并为 [text](url) 和 <url></url> 自动添加 Ctrl+Click 跳转能力。
注意:它不改语言服务,只增强编辑器对 Markdown 文本的交互支持,所以兼容所有语言(JS/TS/Python 注释都行)。
- 安装后无需配置,默认启用;重启 VSCode 后即可使用
- 在 JSDoc 里写
/** See <https:></https:> */或/** [@see](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) */ - 鼠标悬停显示 tooltip,
Ctrl+Click直接用系统默认浏览器打开 - 不干扰原有
Go to Definition或Peek Documentation行为
TypeScript 用户:别依赖 @link,改用标准 Markdown 写法
TypeScript 支持 {@link identifier} 做内部符号链接,但它不支持外部 URL;一旦写成 {@link https://...},TSC 会报错或静默忽略——这不是 VSCode 的问题,是 TS 编译器规范限制。
所以想在 TS 项目里加官方手册跳转,必须绕过 @link,直接用 Markdown 链接语法写进注释正文。
- ✅ 正确:
/** Fetch API spec: <https:></https:> */ - ❌ 无效:
/** {@link https://fetch.spec.whatwg.org/} */(TS 报错Invalid JSDoc link) - ⚠️ 注意斜杠结尾:
https://developer.mozilla.org/比https://developer.mozilla.org更可靠(有些站点会 301 重定向) - 如果文档页有锚点(如 MDN 的
#syntax),直接拼在 URL 后即可,markdown-links完全支持
自建文档跳转:用 editor.action.openLink 绑定快捷键(高级场景)
如果你常要从某段代码快速打开固定手册页(比如每次写 useState 都想跳 React Hooks 文档),可以绕过注释,用 VSCode 的命令 + 键盘绑定实现“一键直达”。
步骤很简单:打开 keybindings.json(Ctrl+Shift+P → Preferences: Open Keyboard Shortcuts (JSON)),加一条规则:
[
{
"key": "ctrl+alt+h",
"command": "editor.action.openLink",
"args": {
"url": "https://react.dev/reference/react/useState"
}
}
]
这样不管光标在哪,按 Ctrl+Alt+H 就开 React useState 页面。适合团队统一约定高频 API 的速查入口。
注意:editor.action.openLink 是 VSCode 内置命令,无需扩展;但 URL 必须是完整协议地址(https:// 开头),不能是相对路径或 file://。
真正麻烦的是维护——每个新 API 都得手动加一条绑定。不如把常用链接收在一个 Markdown 片段里,配合 markdown-links 点着更省事。











