必须通过Preferences → Key Bindings打开并编辑右侧User.sublime-keymap文件,左侧为只读默认配置;该文件须为合法JSON数组格式,command名需通过Ctrl+Shift+P或控制台实测获取,context用于条件分流,保存即生效。

怎么打开并编辑正确的 User.sublime-keymap 文件
所有自定义快捷键必须写在 User.sublime-keymap 里,改别的地方完全无效。点菜单 Preferences → Key Bindings,会并排打开两个文件:左侧是只读的 Default (Windows).sublime-keymap(或对应系统名),右侧才是你要编辑的用户文件。首次打开时右侧常为空,但必须是合法 JSON 数组格式——哪怕只加一条规则,也得用方括号 [ ] 包裹。
command 名写错就静默失效,怎么找对
写错 command 字段,快捷键不会报错,也不会提示,就是按了没反应。最稳的方法是:
- 按
Ctrl+Shift+P(macOS 是Cmd+Shift+P),输入功能关键词,比如 “duplicate line”,命令面板里显示的完整条目名就是真实command值,例如duplicate_line - 更准的方法:按
Ctrl+`打开控制台,输入sublime.log_commands(True),然后手动执行一次目标操作(如菜单里的 “Edit → Line → Delete Line”),控制台会输出类似:command: run_macro_file {"file": "res://Packages/Default/Delete Line.sublime-macro"} - 别信网上搜到的旧名,比如
js_format或beautify,这些大多已废弃;原生“删除整行”根本没delete_line这个命令,硬写就白配
JSON 格式一错,整个快捷键系统就瘫痪
右下角弹红字?90% 是 JSON 解析失败。常见错误包括:
- 用了中文标点,比如全角引号、逗号
-
keys里写了"Ctrl+D"(正确是小写"ctrl+d") - 数组末尾多加了逗号,比如
}] , - 忘记把新规则包进外层数组,直接粘贴一个对象
{...}而不是[{...}] - 手动去
Packages/User/目录下创建或重命名文件——路径和文件名必须严格为User.sublime-keymap,大小写不能错
想覆盖默认键(比如 Ctrl+D)又不丢功能,必须用 context
直接写 {"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}]}]
注意:selection_empty 是唯一可靠判断字段;context 必须和 keys、command 同级;多条件是“且”关系,要实现“或”,只能拆成多条独立规则。
最容易被忽略的是:带 args 的命令(比如调用 macro 删除整行)必须显式传参,不能省;鼠标快捷键要另建 .sublime-mousemap 文件,不在这个 keymap 里管。


















