Keymap插件安装后Cmd+D无效,主因是VSCode不自动覆盖默认快捷键,需检查settings.json中"editor.keyMap"值、macOS辅助功能授权,并手动编辑keybindings.json优先级最高规则。

装了 Keymap 插件却还是按不出 Cmd+D 多光标?不是插件没生效,而是 VSCode 默认不覆盖已有快捷键绑定,尤其当多个 Keymap 扩展共存或用户自定义规则冲突时,Cmd+D、Cmd+Shift+K 这类核心操作极易静默失效。
Keymap 扩展安装后为什么快捷键没反应
VSCode 的 Keymap 扩展(如 Sublime Text Keymap)本质是注入一组预设的 keybindings.json 规则,但它不会自动禁用默认映射。一旦你之前手动改过快捷键、装过其他编辑器插件(比如 Vim)、或系统级快捷键拦截(macOS 的“辅助功能”权限未开),就会导致命令被跳过。
- 检查是否真正在用该 Keymap:打开
settings.json,确认存在"editor.keyMap": "sublime"(注意值是小写字符串,不是扩展名) - Mac 用户必须确保 VSCode 在「系统设置 > 隐私与安全性 > 辅助功能」中已被勾选,否则
Cmd+click列选择等底层事件无法捕获 - 运行
Developer: Toggle Developer Tools,在 Console 里输入vscode.workspace.getConfiguration().get('editor.keyMap'),看返回值是否为你期望的值
手动编辑 keybindings.json 覆盖冲突最可靠
图形界面设置和扩展安装都可能被缓存或覆盖,直接改 keybindings.json 是唯一能 100% 控制优先级的方式。VSCode 按照“用户 > 工作区 > 扩展 > 默认”的顺序合并快捷键,用户级条目永远最高优。
- 用
Cmd+Shift+P→Preferences: Open Keyboard Shortcuts (JSON)打开文件 - 不要删除原有内容,只在数组开头插入新规则,例如强制启用 Sublime 风格多光标:
{"key": "cmd+d", "command": "editor.action.addSelectionToNextFindMatch", "when": "editorTextFocus && !editorReadonly"} - 若想禁用某条默认行为(比如让
Cmd+K Cmd+U不再转小写),加一条带减号前缀的规则:{"key": "cmd+k cmd+u", "command": "-editor.action.transformToUppercase", "when": "editorTextFocus"}
Sublime / IntelliJ / Vim 键位不能混用
VSCode 不支持同时激活多个 Keymap 扩展。即使你装了 Sublime Text Keymap 和 IntelliJ IDEA Keymap,它只会应用最后安装的那个——除非你在 settings.json 中显式指定 editor.keyMap,否则行为不可预测。
-
"editor.keyMap": "sublime"和"editor.keyMap": "idea"是互斥的,不能写成数组或逗号分隔 - Vim 模式(通过
Vim插件)是特例:它接管整个按键流,会完全屏蔽其他 Keymap 扩展,所以别在启用了 Vim 插件的同时还设editor.keyMap - IntelliJ 用户要注意:
Ctrl+Alt+L格式化在 macOS 上实际是Cmd+Option+L,但 VSCode 的ideakeyMap 会自动做平台适配,无需手动改键位
真正容易被忽略的是「when 条件表达式」——它决定快捷键是否在当前上下文生效。比如 editorTextFocus 不成立时(焦点在终端、侧边栏或设置页),Cmd+D 就必然无效,这不是配置错了,而是你按错了地方。


















