一眼看出快捷键被谁占用:按ctrl+k ctrl+s打开界面,搜索组合键(如ctrl+d),列表显示所有命中项,末尾标注来源(prettier、vim、default或user配置),重叠即冲突;悬停可见when条件,重叠则实锤冲突。

怎么一眼看出哪个快捷键被谁占用了
VSCode 不会弹窗提醒,但会在快捷键界面标黄提示冲突。按 Ctrl+K Ctrl+S 打开图形界面,直接在搜索框输入你想查的组合(比如 Ctrl+D),所有命中项立刻列出。每条末尾都清楚写着来源:Prettier、Vim、Default 或你自己的 keybindings.json。鼠标悬停能看到 when 条件,比如 editorTextFocus —— 如果两个命令的 when 条件重叠,就实锤冲突了。
为什么改了 keybindings.json 还是没用
常见原因不是配置写错,而是根本没生效:
-
when条件过窄:比如写了"when": "editorTextFocus",但你在终端里按快捷键,条件不满足,自然不触发 - 输入法劫持:中文输入法在「中文状态」下直接吃掉
Ctrl+P、Ctrl+/等组合,VSCode 根本收不到事件——这不是 VSCode 的问题,关掉输入法里「使用快捷键切换中英文」选项才能根治 - 配置未保存:JSON 文件编辑后必须保存,且 VSCode 不会自动重载,要手动聚焦编辑器窗口或重启
-
keyboard.dispatch设置异常:极少数情况下,该设置被误设为keyCode,会导致修饰键识别失败,恢复默认code即可
如何安全覆盖插件快捷键而不破坏其他功能
别删插件,也别盲目禁用默认键。最稳妥的做法是用 when 条件精准限定作用域:
- 在快捷键界面找到目标命令(如
editor.action.formatDocument),点击铅笔图标 → “将键添加到”,再按下新组合(如Alt+Shift+F),VSCode 会自动写入带正确when的 JSON 条目 - 手动编辑时,务必加上上下文限制:错误写法
{"key": "ctrl+shift+i", "command": "editor.action.formatDocument"};正确写法{"key": "ctrl+shift+i", "command": "editor.action.formatDocument", "when": "editorTextFocus && !editorReadonly"} - 想禁用某个插件的快捷键?不用卸载它,直接在
keybindings.json中加一条带减号的规则:{"key": "ctrl+shift+h", "command": "-gitlens.showQuickFileHistory"},注意命令 ID 必须完全匹配(可在快捷键界面点开查看)
chord 组合键为什么能避开大多数冲突
chord 是 VSCode 原生支持的多步按键序列,比如 Ctrl+K Ctrl+C(先按松开 Ctrl+K,再按 Ctrl+C),这种设计天然绕过单次组合键的抢注逻辑:
- 绝大多数插件和输入法不会监听整套 chord 序列,所以极少被拦截
- VSCode 内部对 chord 的匹配优先级独立,不受普通快捷键顺序影响
- 适合绑定高频但易冲突的操作,比如注释、折叠、格式化等,推荐优先采用
Ctrl+K开头的系列
真正容易被忽略的是:chord 不是“按住 Ctrl+K 再按 C”,而是两段独立按键事件,中间可以有几十毫秒间隔——手速太慢或误触释放时机,都会导致失败。











