sublime text 快捷键失效主因是json格式错误、command名错误或加载顺序冲突;需用sublime.log_input(true)和sublime.log_commands(true)定位问题,检查输入法、显卡热键、插件覆盖及作用域限制。

Sublime Text 自定义快捷键写错就静默失效,不报错、不提醒,90% 的“没反应”根本不是逻辑问题,而是 JSON 格式、command 名或加载顺序出错。
快捷键按了完全没反应?先确认按键进没进 Sublime
别急着改配置。按 Ctrl+` 打开控制台,输入 sublime.log_input(True) 回车,再按你怀疑失效的组合键(比如 Ctrl+/)。如果控制台**完全没输出**,说明按键在进 Sublime 前就被截断了:
- Windows:检查 NVIDIA 控制面板或 Intel Graphics Command Center 里的热键设置,尤其
Ctrl+Alt+方向键类组合 - 中文输入法(搜狗、QQ 拼音)默认劫持
Ctrl+Shift和Ctrl+Space,切英文输入法再试 - macOS:系统设置 → 键盘 → 快捷键 → 关掉 Spotlight 的
Cmd+Space,并确认勾选了「使用 F1、F2 等键作为标准功能键」
按键进了 Sublime 但功能不对?查真实执行的命令
如果 sublime.log_input(True) 有输出(如 key evt: ctrl+d),再输入 sublime.log_commands(True),然后重按同一组合键。控制台会显示实际执行的 command,比如:
command: emmet_expand_abbreviation
这说明不是没绑定,而是被插件抢了。Sublime 加载顺序是:Default → 插件自带的 Default.sublime-keymap → User.sublime-keymap。后加载的规则静默覆盖前一个。排查建议:
- 按
Ctrl+Shift+P输入Preferences: Key Bindings,左右并排打开两个文件 - 在左侧(Default)搜索目标组合,确认它原本应触发什么命令(如
toggle_comment) - 在右侧(User)和所有插件目录(
Packages/Vintage/、Packages/Emmet/等)中全局搜索相同"keys"字段 - 高危插件优先禁用:
Vintage、Emmet、Origami
User.sublime-keymap 写错 JSON 就等于没写
这个文件是纯 JSON 数组,语法错一点整份配置就被 Sublime 静默忽略——右下角可能只闪一下红字提示,稍不注意就错过。必须遵守的硬规则:
- 所有键名和字符串值必须用英文双引号包裹:
"keys"不是keys,"duplicate_line"不是duplicate_line - 数组结尾不能多逗号:
["ctrl+alt+f"],是错的,["ctrl+alt+f"]才对 - 不支持
//注释;想临时禁用某条绑定,要么删整行,要么改成无效命令:"command": "not_a_real_command" - 首次编辑时右侧常为空,但必须用方括号
[ ]包裹整个内容,哪怕只加一条规则
想覆盖 Ctrl+D、Ctrl+S 这类高频键?别直接硬盖
直接写 {"keys": ["ctrl+d"], "command": "duplicate_line"} 看似简单,结果往往是原功能(多光标选词)彻底消失且无法恢复。Sublime 不提供“快捷键优先级回滚”。真要复用,必须加 context 条件区分场景:
[{"keys": ["ctrl+d"], "command": "duplicate_line", "context": [{"key": "selection_empty", "operator": "equal", "operand": true}]},
{"keys": ["ctrl+d"], "command": "find_under_expand", "context": [{"key": "selection_empty", "operator": "equal", "operand": false}]}]
作用域绑定也常被忽略:Python 文件里想让快捷键只生效,得先按 Ctrl+Shift+P 输入 show_scope_name 查到 source.python,再在规则里加 "context": [{"key": "selector", "operator": "equal", "operand": "source.python"}]。Esc、Tab 这类键根本不在 Key Bindings 管辖范围内,任何自定义都无效,还可能破坏原生行为。











