正确入口是Preferences → Key Bindings;手动编辑User.sublime-keymap易出错,必须通过菜单打开并仅修改右侧文件,确保JSON为合法数组格式、使用英文标点、命令名实测获取、冲突时用context限定场景、插件需已启用。

Preferences → Key Bindings 才是正确入口
直接去文件系统找 User.sublime-keymap 手动编辑,大概率出问题:路径错、编码乱、JSON 格式被破坏。Sublime 提供了唯一安全的打开方式——菜单栏点 Preferences → Key Bindings,它会并排打开两个文件:左侧只读的 Default (Windows).sublime-keymap(或对应系统名),右侧可编辑的 User.sublime-keymap。所有自定义都必须写在右侧,改别的地方完全无效。
JSON 格式必须合法,且顶层是数组
User.sublime-keymap 不是普通 JSON 对象,而是 JSON 数组。哪怕只加一条快捷键,也得用方括号 [ ] 包裹:
[{"keys": ["ctrl+alt+j"], "command": "pretty_json"}]
常见错误包括:
- 末尾多逗号(
},)——右下角闪红字但不提示位置 - 用了中文引号或冒号(“”、:)——JSON 解析直接失败
- 漏掉外层方括号,或把整个内容写成对象
{}而非数组[] - 保存后没反应?先看右下角有没有红字,有就一定是格式问题
command 名不能猜,必须实测获取
网上搜到的 delete_line、format_code 这类名字,90% 在当前版本已失效。真实命令名得靠两种方式确认:
- 按
Ctrl+Shift+P(macOS 是Cmd+Shift+P)打开命令面板,输入功能关键词(如 “format json”),看到的完整条目名就是你要的command值 - 按
Ctrl+`打开控制台,输入sublime.log_commands(True),再手动执行一次目标操作(比如右键选 “Pretty JSON → Beautify”),控制台会输出类似:command: pretty_json - 别抄旧教程——插件更新后,命令名可能带版本后缀,或彻底改名
快捷键冲突时,context 是唯一解法
想覆盖 Ctrl+D 但又不想废掉多光标选择?不能直接写死绑定,得加 context 限定场景:
[{
"keys": ["ctrl+d"],
"command": "kill_line",
"context": [{"key": "selector", "operand": "source.json"}]
}]
这样只有在 JSON 文件里按 Ctrl+D 才删除行,其他语言仍保留原功能。查当前文件的语法作用域,按 Ctrl+Shift+P 输入 Show Scope Name 即可看到真实值,比如 source.json 或 source.python。漏掉 context 直接覆盖高频键,等于主动切断常用操作链。
最常被忽略的一点:插件命令(比如 pretty_json)依赖插件本身已启用且未报错。如果快捷键点了没反应,先确认 Package Control 已安装、插件已成功加载、控制台没输出 ImportError 或 command not found —— 这些比 JSON 格式问题更隐蔽,也更难排查。











