直接修改keybindings.json最灵活,但不可删除默认项,应仅追加新条目;必须包含key、command字段,when为可选条件字段,跨平台自动适配修饰键,图形界面仅适合快速试错。

直接改 keybindings.json 最灵活,但别乱删默认项
VS Code 的快捷键本质就是一组 JSON 规则,存放在 keybindings.json 里。它比图形界面更可控,尤其适合批量修改、条件绑定或排除冲突。但新手常犯的错是:直接覆盖整个文件,结果丢失了语言/上下文相关的默认绑定(比如 Ctrl+Space 在 JS 文件里触发智能提示,在 Markdown 里却没用),导致某些命令突然失效。
- 正确做法:只往数组里 追加 新条目,不删不改已有项
- 必须写全字段:
key(按键组合)、command(命令名)、when(可选,控制生效时机) -
when值要小心——比如"when":"editorTextFocus"表示仅在编辑器有文本焦点时生效;写成"when":"always"可能干扰终端或侧边栏操作 - 跨平台兼容写法:
"key":"ctrl+shift+f"在 Windows/Linux 生效,macOS 自动转为cmd+shift+f,不用单独写两套
Ctrl+K Ctrl+S 图形界面适合快速试错,但搜不到“隐藏命令”
按 Ctrl+K Ctrl+S 打开快捷键列表,支持搜索命令名(如输入 format),也支持点击右上角麦克风图标“录制快捷键”来反查某个键组合绑定了什么。但它有个硬伤:插件注册的命令,如果没显式声明 title,就不会出现在搜索结果里——比如某 ESLint 插件的 eslint.executeAutofix 命令,可能搜 eslint 也找不到,只能去插件文档抄命令名。
- 双击某行可直接修改快捷键,改完回车即生效,不用重启
- 右键某条目 → “Change When Expression” 可手动补
when条件,比如限制只在.ts文件中生效 - 禁用某快捷键?不是删掉,而是右键 → “Remove Keybinding”,它会在 JSON 中加一条
"enable": false记录
常见冲突:为什么 Ctrl+Shift+F 没触发全局搜索?
默认情况下 Ctrl+Shift+F 绑定的是 workbench.action.findInFiles(全局搜索),但如果你装了格式化插件(如 Prettier),它可能悄悄把同一组合键劫持为 editor.action.formatDocument。这时你在编辑器里按,会格式化当前文件;切到空白处再按,才触发全局搜索——因为 when 条件不同。
- 查清归属:在快捷键界面搜索
ctrl+shift+f,看哪条排在最上面(优先级更高) - 解除冲突:找到插件那条,右键 → “Remove Keybinding”,或手动在
keybindings.json中把它"enable": false - 想保留两个功能?换一个组合,比如把格式化改成
Ctrl+Alt+F,避免和 IDE 默认逻辑打架
团队同步时,keybindings.json 别直接扔进 Git
这个文件路径因系统而异:~/.config/Code/User/keybindings.json(Linux)、%APPDATA%\Code\User\keybindings.json(Windows)、~/Library/Application Support/Code/User/keybindings.json(macOS)。直接提交会导致路径错误或权限问题,而且它常含个人习惯配置(比如 Ctrl+` 切终端,但有人用 Ctrl+Shift+`),强行统一反而降低效率。
- 推荐做法:抽离出团队共用部分,另存为
.vscode/keybindings.team.json,通过插件(如 Settings Sync)或脚本注入 - 真正该进 Git 的是
.vscode/keybindings.json(工作区级),它只影响当前项目,且路径固定 - 注意:工作区级配置优先级高于用户级,但会被插件动态注册的快捷键覆盖——这点容易被忽略


















