直接编辑keybindings.json最稳妥,需通过ctrl+shift+p输入“preferences: open keyboard shortcuts (json)”打开;每条绑定须为严格json对象格式{ "key": "...", "command": "...", "when": "..." },且数组末项不可有尾逗号;修改后实时生效,无需重启。

直接改 keybindings.json 最稳,别信“点点鼠标就能搞定”的说法——可视化编辑器容易漏掉 when 条件、覆盖不明确,真出问题还得手动修 JSON。
怎么打开并编辑 keybindings.json
命令面板(Ctrl+Shift+P)输入 Preferences: Open Keyboard Shortcuts (JSON) 回车,就进到真实配置文件。别用“键盘快捷方式”可视化界面去双击修改,它生成的规则常缺 when,一粘贴就冲突。
- 每次新增绑定必须是 JSON 数组里的一个对象,格式严格:{ "key": "...", "command": "...", "when": "..." }
- 复制已有规则时注意逗号——数组最后一项不能带尾逗号,否则 VSCode 启动报错
- 改完保存,VSCode 实时生效,不用重启
哪些 command 值最值得重绑
高频但默认键位反直觉的操作,优先动它们。比如 editor.action.formatDocument 默认是 Shift+Alt+F,手要跨三排键;改成 Ctrl+Shift+F 更顺。再比如 Java 重构,别绑 java.rename(光标必须精准落在变量上),改用通用入口 editor.action.refactor,按一次就弹菜单,Alt+Enter 是更鲁棒的选择。
-
workbench.action.navigateBack/workbench.action.navigateForward:浏览器式后退/前进,适合绑定到侧键(但需系统级映射,见下条) -
workbench.action.files.saveAll:比Ctrl+S单文件保存更省心,尤其改了多个配置文件时 -
editor.action.commentLine:注释行,确认语言支持(如 Shell、Python 都行,但某些自定义语言可能没注册 provider)
为什么侧键(Button4/Button5)不能直接绑 command
VSCode 根本不收鼠标按钮事件,keybindings.json 里写 "key": "button4" 完全无效——这字段只认键盘扫描码。Linux 下得用 xbindkeys + xdotool 把 Button6 映射成 alt+Left,macOS 得靠 Karabiner-Elements 把 button4 映射成 cmd+[,之后再在 VSCode 里把 alt+Left 或 cmd+[ 绑给 workbench.action.navigateBack。
- 验证侧键编号:运行
xev -event button,点侧键看输出里的button 6或button 7 - 别在
keybindings.json里写任何鼠标相关字符串,VSCode 不解析 - 映射后若不生效,先检查
when条件是否限制太死(比如写了editorTextFocus但你在搜索框里按)
when 条件不是可选项,是防冲突刚需
不加 when 就像裸奔:你绑了 Ctrl+P 给 workbench.action.terminal.toggle,结果在编辑器里按 Ctrl+P 找文件的功能就没了。VSCode 按条件优先级执行,editorTextFocus 和 !terminalFocus 组合能守住原功能边界。
- 常用组合:
editorTextFocus && !inDebugRepl(编辑器有焦点且不在调试控制台) - 查当前上下文:按
Ctrl+Shift+P→Developer: Inspect Key Mappings,然后按你想测的键,看底下显示哪些when成立 - 多个相同
key的规则,VSCode 取第一个when为 true 的执行,顺序很重要
真正卡住人的从来不是“怎么加一行 JSON”,而是 when 写得太宽放过了不该触发的场景,或者太窄让命令永远等不到机会执行。调的时候多用 Inspect Key Mappings 看实时条件状态,比猜强十倍。











