vscode原生仅支持chord(如ctrl+k ctrl+c,分步触发)和修饰键组合(如ctrl+shift+f,同时按下)两类多键组合;chord不可自定义,须依赖内置命令starter及精确when条件约束。

VSCode 支持哪些多键组合?不是所有“按两下”都算数
VSCode 原生只支持两类多键组合:chord(和弦键)和普通修饰键组合。前者如 Ctrl+K Ctrl+C,后者如 Ctrl+Shift+F。关键区别在于:chord 是两个**分离的按键事件**(先按 Ctrl+K,松开,再按 C),而修饰键组合是**同时按下**(Ctrl、Shift、F 三键压住不放)。VSCode 不支持用户自定义 chord——只有内置命令(如 editor.action.commentLine)注册了 chord starter 才能触发第二步。
怎么安全地重绑 Ctrl+K Ctrl+C 这类 chord?
不能靠“新增一条 "key": "ctrl+k ctrl+c" 就生效。必须满足三个条件:
- 保留或显式定义
Ctrl+K对应一个已启用 chord 的命令(如editor.action.commentLine) - 第二步(如
C)的绑定必须带"when": "editorTextFocus"等上下文约束,否则在终端或搜索框里会误触发 - 如果删过默认
Ctrl+K绑定,仅加新规则无法恢复 chord 行为——得把 starter 和 chord 两条规则都补全
三键组合比双键更稳,但要注意平台差异
比如想绑定格式化文档,Ctrl+Shift+F 在 Windows/Linux 可用,但在 macOS 上得写成 cmd+shift+f,且必须分别定义两条规则(VSCode 会自动忽略不匹配当前系统的那条):
[
{
"key": "ctrl+shift+f",
"command": "editor.action.formatDocument",
"when": "editorTextFocus"
},
{
"key": "cmd+shift+f",
"command": "editor.action.formatDocument",
"when": "editorTextFocus"
}
]
别指望 macOS 用 Ctrl 键触发原生命令——系统级修饰键映射不同,硬写会静默失效。
最容易被忽略的坑:when 条件漏写或写错
没加 when,快捷键会在任何地方拦截输入,比如你在终端里按 Ctrl+K 想清行,结果触发了注释;写了 editorTextFocus 却在搜索框里按,自然没反应。常见有效条件有:
-
editorTextFocus:仅编辑器文本区生效 -
!terminalFocus && !searchInputBoxFocus:避开终端和搜索框 -
editorLangId == 'python':只在 Python 文件中响应
chord 类型尤其依赖 when 控制第二步触发范围,漏掉它,就等于把键盘交给了不可控的上下文。











