vscode导出的keybindings.json仅记录用户显式修改的快捷键,不含默认绑定、说明、使用频率或when条件解释;要查看全部生效快捷键,应通过命令面板打开键盘快捷方式ui或默认快捷键json文件。

VSCode 本身不生成“快捷键映射报表”——它只导出原始 keybindings.json,不含说明、分类、使用频率或上下文条件(如 when 表达式),更不会自动标记哪些是你真正常用的。
导出的 keybindings.json 是什么内容?
它只记录你**显式覆盖或新增**的快捷键,不是当前全部生效的快捷键。默认未改动的绑定(比如 Ctrl+P 打开文件)根本不会出现在这个文件里。
- 文件路径:用户级配置,通常位于
~/.config/Code/User/keybindings.json(Linux)、%APPDATA%\Code\User\keybindings.json(Windows)、~/Library/Application Support/Code/User/keybindings.json(macOS) - 结构是纯 JSON 数组,每条含
key和command,可能带when字段 - 没有注释、没有中文说明、没有生效状态标识(比如是否被扩展冲突禁用)
想看“当前所有生效快捷键”,别依赖导出文件
导出的 JSON 不全,但 VSCode 提供两个实时查看方式,比导出更可靠:
- 打开命令面板(
Ctrl+Shift+P或Cmd+Shift+P),输入Preferences: Open Keyboard Shortcuts→ 在 UI 中搜索关键词(如format、save),右侧会显示是否“已重写”,并标注来源(Default/User/Extension) - 同在命令面板中输入
Preferences: Open Default Keyboard Shortcuts (JSON)→ 查看只读的完整默认列表(含大量你没改过、但实际生效的键位)
这两个入口能反映真实运行时状态,而导出的 keybindings.json 只是你的“差异快照”。
when 条件让快捷键不总是生效,导出文件里却看不出效果
比如这条配置:{"key":"Ctrl+L","command":"editor.action.selectLine","when":"editorTextFocus"},在终端或设置页里按 Ctrl+L 就没反应——这是设计使然,不是失效。但导出的 JSON 文件里只有字符串 "editorTextFocus",不解释它意味着什么。
-
when表达式决定快捷键的“作用域”,常见值有editorTextFocus、inDebugRepl、terminalFocus等 - 查某个快捷键为什么没触发?先确认焦点在哪,再对照它的
when条件;不要直接怀疑配置写错了 - 命令面板里悬停快捷键条目,能看到实时生效状态(灰色=不满足
when,高亮=就绪)
真要生成可读报表,得自己动手整理
没有一键 PDF/HTML 报表工具,但你可以组合现有能力快速产出可用文档:
- 在
Ctrl+K Ctrl+S界面全选(Ctrl+A)→ 复制 → 粘贴到 Markdown 编辑器,删掉调试/测试类非核心项 - 对关键快捷键补上简短说明,比如把
workbench.action.terminal.toggle标为“切换终端” - 加一列标注
when含义,例如editorTextFocus && !editorReadonly→ “仅编辑器可编辑时” - 打印前用浏览器“打印预览”,避免
Ctrl+Shift+P被换行截断
最易被忽略的是:VSCode 从不记录你按了几次快捷键,所谓“常用”只能靠你自己观察——连续三天用 Ctrl+D 改变量名,它就是你的常用项,但编辑器不会帮你标出来。











