应编辑右侧可写的User.sublime-keymap文件,保持合法JSON数组格式,command名需通过命令面板或控制台日志确认,键位绑定须注意平台标识、作用域context及参数结构。

怎么打开并编辑正确的 User.sublime-keymap 文件
点菜单 Preferences → Key Bindings,会并排打开两个文件:左侧是只读的 Default (Windows).sublime-keymap(或对应系统名),右侧才是你要编辑的 User.sublime-keymap。所有自定义必须写在这里,改其他地方完全无效,而且下次升级可能直接覆盖。
首次打开时右侧常为空,但必须保持合法 JSON 数组格式——哪怕只加一条规则,也得用方括号 [ ] 包裹:
[{"keys": ["ctrl+alt+d"], "command": "duplicate_line"}]
保存后立即生效,不用重启、不用 reload。右下角弹红字?八成是 JSON 格式错:逗号多写、引号没闭合、混入中文标点。
command 名怎么找才准确,而不是靠猜
命令名写错,快捷键就静默失效,不报错也不提醒。网上搜到的 js_format 或 beautify 这类旧名基本已失效;delete_line 也不是原生命令——它实际由 run_macro_file 驱动,必须带 args.file 路径。
- 最稳方法:按
Ctrl+Shift+P打开命令面板,输入功能关键词(如“delete line”),看到的完整条目名就是你要的command值(例如run_macro_file) - 更准方法:按
Ctrl+`打开控制台,输入sublime.log_commands(True),再手动执行一次目标操作(比如从菜单点“删除行”),控制台会输出类似:command: run_macro_file {"file": "res://Packages/Default/Delete Line.sublime-macro"}
覆盖 Ctrl+S、Ctrl+D 这类高频键前必须想清楚
直接把 Ctrl+D 绑给 duplicate_line,多光标选词功能就彻底消失;把 Ctrl+S 改成别的,保存动作就卡住——不是变强,是自废操作链。
- 真要覆盖,优先换组合键(比如
ctrl+alt+s),而不是硬顶默认键 - 必须覆盖时,加
context限定作用域,例如只在source.python下生效 - 想禁用某个默认键(如防误触
ctrl+alt+s),写:{"keys": ["ctrl+alt+s"], "command": "unbound"} - 带参数的命令(如格式化)必须传
args,且结构必须嵌套正确,漏掉或路径写错都会导致不响应
为什么快捷键写了却没反应?常见静默失效原因
Sublime 不会报错提示你哪条错了,只会静默跳过。问题通常出在这三处:
-
keys写错大小写或平台标识:Windows 用ctrl,macOS 用super(不是cmd);"Ctrl+D"是错的,必须小写"ctrl+d" -
command名和当前版本不匹配,尤其插件命令(如phpfmt插件的命令可能是phpfmt或php_fmt,得实测) - 没加
context导致作用域不匹配:在 Python 文件里绑了全局键,但实际该命令只在source.python下注册,结果按了没反应
作用域查法:打开目标文件,按 Ctrl+Shift+P 输入 show_scope_name 回车,状态栏显示的首个 scope(如 source.python)就是你要填的 context 值。


















