如何通过VSCode API获取指定命令的用户自定义快捷键
VSCode API 获取指定命令已注册快捷键的方法
VSCode 提供了官方API可以直接获取包含用户自定义配置在内的所有生效快捷键,不需要手动解析package.json文件。
可用API说明
直接调用vscode.keybindings.getKeybindingsForCommand()方法即可,传入目标命令的ID作为参数,返回值是当前环境下所有绑定到该命令的、实际生效的快捷键配置数组。
- 返回结果已经自动按VSCode内部的快捷键优先级规则排序,覆盖所有来源的配置:
- 扩展预置的默认快捷键
- 用户在快捷键设置面板/
keybindings.json中自定义的快捷键 - 其他扩展对该命令覆盖设置的快捷键
- 每个快捷键对应的
when触发条件、来源等元信息
注意:手动解析扩展
package.json中contributes.keybindings字段的方式只能拿到扩展自带的默认快捷键,完全无法获取用户自定义、其他配置覆盖的内容,不建议使用。
调用示例
import * as vscode from 'vscode'; // 替换为你需要查询的命令ID,例如格式化文档命令是editor.action.formatDocument const commandId = "your.target.command.id"; const activeKeybindings = vscode.keybindings.getKeybindingsForCommand(commandId); // 遍历拿到所有绑定的快捷键 activeKeybindings.forEach(binding => { console.log(`生效快捷键:${binding.key},触发条件:${binding.when}`); });
如果需要实时感知快捷键配置变化,可以订阅vscode.workspace.onDidChangeConfiguration事件,检测到快捷键相关配置更新时重新调用上述API获取最新绑定关系即可。
内容的提问来源于stack exchange,提问作者vanowm
相关产品推荐
相关产品推荐

