直接改keybindings.json是唯一可靠方式,图形界面仅作只读展示;需用Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS)输入“Preferences: Open Keyboard Shortcuts (JSON)”打开对应路径的JSON文件,在空数组中添加含key、command及可选when字段的对象。

直接改 keybindings.json 是唯一可靠的方式,图形界面只能看、不能真正编辑映射逻辑。
怎么打开真正可编辑的快捷键配置文件
VSCode 的快捷键不是在设置页里“点点点”就能改的——那个界面是只读视图。你必须进到 JSON 文件里手动写规则。
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Preferences: Open Keyboard Shortcuts (JSON)并回车 - 它会打开
keybindings.json,路径取决于系统:%APPDATA%\Code\User\keybindings.json(Windows)、~/Library/Application Support/Code/User/keybindings.json(macOS)、~/.config/Code/User/keybindings.json(Linux) - 首次打开时内容通常是空数组
[],放心往里加对象,不用怕格式错
一条有效快捷键绑定长什么样
每个条目必须包含 key 和 command,when 是可选但强烈建议加上,否则可能在不该触发的地方生效。
-
key写法要区分平台:ctrl+shift+f(Windows/Linux),cmd+shift+f(macOS);别混用 -
command必须是 VSCode 内部注册的真实命令 ID,比如editor.action.formatDocument,不是中文名也不是插件 UI 里显示的描述文字 -
when控制上下文,常见值有editorTextFocus(光标在编辑器里)、inDebugMode(调试中)、terminalFocus(终端获得焦点) - 错误示例:
"command": "格式化文档"→ 这不会生效;正确写法是"command": "editor.action.formatDocument"
从 IntelliJ 或 Vim 用户迁移时的关键陷阱
插件能帮你起步,但不能替代理解底层映射逻辑。很多问题出在“以为装了插件就万事大吉”,结果快捷键不响应或冲突。
- IntelliJ Keybindings 插件默认启用,但某些快捷键(如
Alt+Enter)依赖语言服务器支持,如果当前文件没激活对应语言插件(比如 .py 文件没装 Python 扩展),Alt+Enter就不会弹出意图操作 - Vim 插件(如 vim-mode)会接管几乎所有编辑行为,此时你自定义的
ctrl+d可能被忽略——因为when条件不匹配,Vim 模式下焦点不在普通编辑器上下文里 - 插件自带的快捷键和你手写的规则共存时,优先级以
keybindings.json为准,但若两条规则key相同、when条件都满足,后写的会覆盖前写的
导出/同步配置时最容易丢的东西
很多人复制 keybindings.json 到新机器,发现部分快捷键失效——不是文件没生效,而是漏掉了依赖项。
- 只复制 JSON 文件不够:插件本身必须已安装。例如你用了
editor.action.organizeImports,但新机器没装 ESLint 或 Prettier,这个命令根本不存在,快捷键自然无效 -
when条件里引用的上下文键(context key)可能来自插件,比如python.isAvailable或typescriptEnabled,这些不是 VSCode 原生上下文,插件未启用时它们恒为 false - 跨平台同步时,别直接复制含
cmd的键位到 Windows 机器上——得手动改成ctrl,或者用条件表达式做平台判断(虽然少见,但可行)
真正难的不是写几行 JSON,而是搞清某个快捷键到底在什么条件下才该触发、它背后依赖哪些插件和语言能力。越想“一键迁移”,越要先拆开看清楚每条规则的执行链路。


















