所有自定义快捷键必须写在User.sublime-keymap中,不可修改Default文件;该文件是JSON数组,每项需含keys和command字段,支持args传参;命令名可通过命令面板、控制台日志或查阅Default文件获取;后加载的用户配置会覆盖默认及插件配置,禁用快捷键可用"unbound"。

别碰 Default.sublime-keymap 文件——它属于系统默认配置,直接修改不仅容易被更新覆盖,还可能引发异常。所有自定义都应写在 User.sublime-keymap 里。
打开正确的配置文件
点击顶部菜单 Preferences → Key Bindings,会并排打开两个文件:
- 左侧是只读的 Default (Windows).sublime-keymap(或对应你系统的版本),可用来查命令名和原快捷键,但不可编辑
- 右侧是可编辑的 User.sublime-keymap,所有新增、修改、覆盖操作都只在这里做
写对 JSON 格式
用户文件本质是一个 JSON 数组,每条快捷键是一条对象,必须包含 keys 和 command 字段:
-
"keys"是按键组合,用小写英文,多个键用逗号分隔,如["ctrl+alt+l"] -
"command"是 Sublime 内部命令名,比如"save"、"toggle_comment"、"reindent" -
"args"可选,用于传参,例如{"overlay": "command_palette"}指定打开命令面板 - 整份文件必须是合法 JSON:中括号包裹、对象间用逗号分隔、引号统一用英文双引号
怎么知道命令名?
不确定某个功能对应的 command 名?有三个靠谱办法:
- 打开命令面板(Ctrl+Shift+P),输入功能关键词(如“comment”),右侧显示的正是实际命令名
- 在控制台(Ctrl+`)中输入
sublime.log_commands(True),然后手动执行一次该操作,控制台会打印出完整命令和参数 - 浏览左侧 Default 文件,搜索关键词(如 “comment” 或 “delete_line”),直接抄对应 command 值
覆盖或禁用已有快捷键
Sublime 加载顺序是:默认键位 → 插件键位 → 用户键位。后加载的同名 command 会自动覆盖前面的。
- 想改“删除当前行”为 Ctrl+D,就在 User 文件里加:
{ "keys": ["ctrl+d"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Line.sublime-macro"} } - 想彻底禁用某个快捷键(比如不想让 Ctrl+S 保存),加一条指向不存在命令或 unbound:
{ "keys": ["ctrl+s"], "command": "unbound" }
基本上就这些。不复杂但容易忽略优先级顺序和 JSON 校验,保存后如果没生效,先看右下角有没有红色报错提示。










