Sublime快捷键设置必须通过Preferences → Key Bindings打开并排JSON文件,仅编辑右侧User.sublime-keymap数组,补全方括号外壳、使用英文标点、通过Ctrl+Shift+P或控制台获取准确command名,并用context限定作用域。

Sublime 没有图形化的“快捷键设置界面”,所谓调出设置界面,就是打开两个并排的 JSON 文件:左侧只读、右侧可编辑,所有自定义都必须写在右侧的 User.sublime-keymap 里,改别的路径或文件完全无效。
Preferences → Key Bindings 是唯一正解入口
别手动去 Packages/User/ 下找文件,也别点错菜单项。最稳方式是:
- Windows/Linux:按
Ctrl+Shift+P,输入Preferences: Key Bindings回车 - macOS:按
Cmd+Shift+P,同样输入Preferences: Key Bindings回车
这会立刻并排打开两个文件——左侧是 Default (Windows).sublime-keymap(或对应系统名),右侧是 User.sublime-keymap。你只管编辑右侧,保存即生效,无需重启、不用 reload。
右侧文件为空?必须补上合法 JSON 数组外壳
首次打开时右侧常为空白,但 Sublime 不接受空文件或对象字面量,它只认方括号包裹的数组。哪怕只加一条快捷键,也得这样写:
[{"keys": ["ctrl+alt+s"], "command": "save"}]
常见翻车点:
- 漏掉最外层
[ ],结果快捷键静默失效 - 末尾多逗号,比如
"save"},,右下角弹红字但不说明原因 - 用中文引号
“”或全角标点,JSON 直接解析失败
command 名不是猜出来的,是实测出来的
网上搜到的 delete_line、js_format、format_code 这类名字,90% 已过时或根本不存在。Sublime 不报错,你按了就毫无反应。
正确获取方式只有两个:
-
Ctrl+Shift+P输入功能关键词(如 “delete line”),看到的完整条目名才是真实command值,例如run_macro_file - 按
Ctrl+`打开控制台,执行sublime.log_commands(True),再手动点一次菜单操作(如 Edit → Line → Delete Line),控制台会输出类似:command: run_macro_file {"file": "res://Packages/Default/Delete Line.sublime-macro"}
注意:这个命令带 args,光写 "command": "run_macro_file" 不够,还得把 "args": {...} 补全,否则照样不触发。
为什么 Ctrl+D 改了却没反应?作用域和冲突常被忽略
快捷键默认是全局生效的,但很多命令(尤其是插件命令)只在特定语法下才可用。比如你想让 Ctrl+Alt+P 插入 print(),但没加 context,它就会在 .txt、.json 甚至命令面板里都响应,体验极差。
更关键的是高频键覆盖风险:
- 直接把
Ctrl+D绑给duplicate_line,多光标选词功能就永久丢失 - 想保留原功能又加新行为?得用
context判断当前是否有选区,或查selector限定为source.python - 真要禁用默认键,不能只删 Default 文件里的规则,必须在 User 文件里显式写
"command": "unbound"
作用域怎么查?打开一个 .py 文件,Ctrl+Shift+P 输入 show_scope_name 回车,状态栏显示的首个词(如 source.python)就是你要的 operand。

















