用Ctrl+K Ctrl+S打开快捷键设置页,搜索ctrl+shift+p,查看“源”列为GitLens等扩展的条目即为占用者;带黄色感叹号的表示已被覆盖,可点击展开确认。

怎么快速查出哪个扩展占用了 Ctrl+Shift+P
直接按 Ctrl+K Ctrl+S 打开快捷键设置页,在右上角搜索框输入 ctrl+shift+p,所有绑定该组合的条目立刻列出。重点看“源”列:如果显示 GitLens、vscode-neovim 或 Prettier,基本就是它在抢——这些扩展默认会注册高频键,且不提示。带黄色感叹号图标的条目说明已被覆盖,点击可展开查看被谁顶替。
禁用某个扩展的快捷键但不卸载它
图形界面里找到对应条目,点左侧垃圾桶图标即可禁用该绑定;更稳妥的方式是编辑 keybindings.json,用减号前缀显式屏蔽:
[{"key": "ctrl+shift+p", "command": "-gitlens.showQuickPick"}]
注意:command 值必须是完整命令 ID(右键条目 → “复制命令 ID” 可得),不能写中文名或留空;写成 "" 或 null 都会被 VSCode 忽略。
为什么改了 keybindings.json 却没反应
-
keybindings.json必须是合法 JSON 数组格式,哪怕只加一条,也要包在[ ]里,末尾不能少逗号 -
when条件不满足时,绑定完全不触发——比如写了"when": "editorTextFocus",但在终端里按,就等于没配 - 系统级程序(如搜狗拼音、Logitech Options、Raycast)可能截走了按键,VSCode 根本收不到;临时退出它们再试,比反复改配置更有效
- 非美式键盘用户要检查
settings.json是否设置了"keyboard.dispatch": "keyCode",否则Ctrl+;可能被识别成Ctrl+:
让同一快捷键在不同场景执行不同命令
靠 when 条件分流,而不是删掉扩展的绑定。例如想让 Ctrl+D 在编辑器中选词、在终端中复制,可以这样写:
[
{"key": "ctrl+d", "command": "editor.action.addSelectionToNextFindMatch", "when": "editorTextFocus"},
{"key": "ctrl+d", "command": "terminal.copySelection", "when": "terminalFocus"}
]
VSCode 按顺序匹配,先满足条件的那条生效。别漏掉 when,否则容易在错误上下文触发意外行为——这是最常被跳过的一步。











