先用sublime.log_input(True)确认按键是否进入Sublime,无输出说明被系统、输入法或第三方工具截获;有输出再按加载顺序排查Default→插件→User绑定覆盖、JSON语法错误及插件冲突。

快捷键根本没进 Sublime,先用 sublime.log_input(True) 确认
很多用户一上来就改 Key Bindings – User,结果白忙活——因为按键压根没进编辑器。按 Ctrl+` 打开控制台,输入 sublime.log_input(True) 回车,再按你怀疑失效的组合(比如 Cmd+D 或 Ctrl+Shift+P)。如果控制台完全没输出,说明 macOS 系统、输入法(搜狗/百度默认劫持 Cmd+Shift+L)、显卡驱动(NVIDIA/Intel 控制面板热键)或键盘固件(如 Karabiner)已截断事件。
确认按键进了 Sublime 后,查加载顺序和插件覆盖
Sublime 的快捷键加载顺序是:内置 Default.sublime-keymap → 插件自带的 Default.sublime-keymap → 你的 Key Bindings – User。后加载的同 keys 绑定会静默覆盖前一个,且不报错。
- 按
Ctrl+Shift+P输入Preferences: Key Bindings,左右并排打开文件 - 在左侧(Default)搜你要的组合,比如
"ctrl+/",确认原命令是toggle_comment - 在右侧(User)和所有插件目录(
Packages/Vintage/、Packages/Emmet/等)里全局搜索同一"keys"字段 - 高频冲突插件:Vintage(重映射
Cmd+D)、Emmet(占Ctrl+Shift+7)、Origami(劫持Esc)、GitGutter(复用Ctrl+Cmd+G)
用 subl --safe-mode 快速定位是否插件问题
终端执行 subl --safe-mode 启动无插件环境,测试快捷键是否恢复。若恢复正常,说明必然是插件导致:
- 用
Ctrl+Shift+P输入Package Control: Disable Package,逐个禁用可疑插件 - 特别注意 Vintage:它把
Cmd+D改为 Vim 模式行为,即使你写了自定义绑定也无效 - 临时修改插件设置:进
Preferences → Package Settings → Vintage → Settings,设"exit_insert_mode_on_escape": false避免 Esc 干扰多行操作 - 别在
User.sublime-keymap里硬写{"keys": ["cmd+d"], "command": "find_under_expand"}—— Vintage 的 Default 加载更晚,直接盖掉你的配置
User.sublime-keymap 写错 JSON 就等于没写
语法错一点,整份配置静默失效,右下角可能只闪一下红字提示,极易忽略:
- 必须用英文双引号:
"keys"不是keys,更不能用中文引号或单引号 - 数组结尾不能多逗号:
["ctrl+alt+f"],是错的,["ctrl+alt+f"]才对 - JSON 不支持
//注释;想临时禁用某条,删整行,或改成"command": "not_a_real_command" - 保存(
Ctrl+S)后立即生效,但得确保没其他插件在更靠后位置又绑了同一组keys
Esc、Tab 这类键是内核硬编码行为,不走任何 keymap 文件,往 User.sublime-keymap 里加 escape 绑定不仅无效,还会破坏原生逻辑——比如按了 Esc,搜索框卡住不关。


















