VSCode快捷键通过when条件实现上下文感知,如F12在编辑器聚焦且有定义时跳转,Ctrl+D根据选中状态分别扩展单词或添加匹配项,支持逻辑组合与优先级控制。

VSCode 的快捷键系统支持上下文感知(context-aware)行为,这意味着同一个按键组合在不同条件下可以触发不同操作,甚至不触发任何操作。这种机制依赖于“当”(when)条件表达式来控制快捷键的激活时机。
每个快捷键绑定都可以通过 when 子句定义其生效的上下文。只有当 when 表达式的值为 true 时,该快捷键才会执行对应命令。
常见上下文变量包括:
查看默认快捷键设置(文件 → 首选项 → 键盘快捷方式)可发现多个基于上下文的绑定:
这些差异背后都由 when 条件驱动。例如:
{
"key": "f12",
"command": "editor.action.revealDefinition",
"when": "editorHasDefinitionProvider && editorTextFocus"
}表示仅当编辑器支持跳转定义且当前焦点在编辑器上时,F12 才生效。
用户可在 keybindings.json 中手动添加 when 条件实现精细控制。比如:
[
{
"key": "ctrl+d",
"command": "cursorWordPartRightSelect",
"when": "textInputFocus && !editorHasSelection"
},
{
"key": "ctrl+d",
"command": "editor.action.addSelectionToNextFindMatch",
"when": "editorTextFocus && editorHasSelection"
}
]这个配置让 Ctrl+D 在无选中时扩展单词选择,在已有选中时添加下一个匹配项到选区,体现同一按键在不同状态下的语义切换。
多个条件可用逻辑运算符连接:
VSCode 按照键绑定列表顺序匹配,先定义的规则优先执行。因此自定义快捷键若要覆盖默认行为,需确保其 when 条件足够具体,并位于默认项之后或显式设置 command 覆盖。
基本上就这些。掌握 when 条件和上下文变量,就能理解 VSCode 快捷键为何在不同场景下表现不同,也能按需定制更智能的操作流程。
以上就是VSCode快捷键的上下文感知与条件执行规则的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号