Keybinding Service
快捷键服务(Keybinding Service)负责把规范化后的快捷键字符串映射到命令,并在当前上下文里选出应该执行的那一条绑定。
核心数据结构
常见实现会同时维护两类索引:
key -> Keybinding[]command -> Keybinding[]
这样系统既能按快捷键查命令,也能按命令查绑定。
冲突裁决
- 先看 Context Key Expression 是否成立
- 多条绑定同时成立时,优先选择作用域更具体的
when - 仍然并列时,再按注册顺序或内部 order 决定优先级
运行流程
监听 Keyboard Event,经过 Keyboard Layout Mapping 归一化,再查找绑定、执行命令,并在命中时调用 preventDefault()。
代表实现
VS Code 会依次加载默认绑定、插件绑定和用户绑定,再以更晚注册的绑定覆盖更早注册的绑定。