VSCode离线文档无独立命令,实际依赖语言服务器本地解析,通过绑定editor.action.showHover等内置命令实现快捷访问。

VSCode 离线文档(如内置的 TypeScript/JavaScript 智能提示、Hover 文档、参数提示)本身没有独立的“打开离线文档”命令,所以不存在一个叫 openOfflineDocs 的快捷键可直接绑定。你真正能控制的是触发文档查看行为的已有命令——比如悬停、聚焦参数、显示定义等,它们默认就依赖本地语言服务器提供的离线数据。
为什么搜不到“离线文档”相关 command?
VSCode 不提供名为 “离线文档” 的独立功能或命令。所谓“离线文档”,实际是语言服务器(如 TypeScript Server、Python Pylance)在本地分析代码后,通过以下标准命令返回的内联信息:
-
editor.action.showHover:鼠标悬停等效的键盘触发(默认无绑定) -
editor.action.triggerParameterHints:唤出函数参数提示(默认ctrl+shift+space) -
editor.action.peekDefinition:在当前窗口内预览定义(默认alt+f12) -
editor.action.revealDefinition:跳转到定义(默认f12)
这些命令只要语言服务器正常运行(无需联网),就会返回本地解析的文档内容。所谓“自定义离线文档快捷键”,本质就是给这些命令重新分配更顺手的键位。
如何为 Hover / 参数提示绑定新快捷键
想用 ctrl+alt+h 快速呼出当前光标处的文档提示(即 Hover),就在 keybindings.json 中加这条:
[{"key": "ctrl+alt+h", "command": "editor.action.showHover", "when": "editorTextFocus"}]
注意点:
-
editor.action.showHover在终端、搜索框等非编辑器区域不会生效,必须加"when": "editorTextFocus" - 它不弹窗,只在编辑器右上角显示小浮层;若没反应,先确认光标是否真在代码行内(而非空行末尾或注释中)
- 部分插件(如 TabNine)会拦截该命令,可临时禁用插件验证是否冲突
避免和系统/插件热键冲突的实操建议
离线文档类操作对响应延迟敏感,一旦被拦截就显得“失灵”。常见冲突来源:
- Linux 下
ctrl+alt+t默认唤起终端,VSCode 根本收不到该组合键 → 改用ctrl+alt+shift+h或避开ctrl+alt前缀 - Windows/macOS 系统级截图工具(如 Snipaste、CleanShot)常占
ctrl+shift+4类组合 → 用 VSCode 内置命令Developer: Inspect Key Mappings查谁注册了你的目标键 - 某些主题插件会重绑定
f1到帮助页面 → 若你想用f1触发 Hover,得先在 keybindings.json 里 unset 原绑定:{"key": "f1", "command": "unset"}
when 条件写错会导致“有绑定却没文档”
最易被忽略的坑:你以为绑定了 Hover,但实际只在 Markdown 预览里生效,或反过来——因为 when 表达式限制太死。例如:
- 写
"when": "editorLangId == 'typescript'"→ 在 .js 文件里按了也静默,哪怕 TS 服务器正在为 JS 提供类型检查 - 漏掉
editorTextFocus→ 在资源管理器里按快捷键,VSCode 尝试执行但无目标编辑器,结果什么也不显示 - 误写
"when": "editorTextFocus && !editorReadonly"→ 文件只读时(如 node_modules 里的文件)Hover 彻底不可用,而你其实就想看文档
调试方法:按快捷键后立即打开命令面板(ctrl+shift+p),输入 Developer: Inspect Key Mappings,把焦点移到编辑器,再按一次你的快捷键,就能看到 VSCode 实际匹配到了哪条规则、why not match 哪些条件。


















