必须编辑user.sublime-keymap文件,preferences→key bindings打开后只在右侧(user)添加合法json数组格式的快捷键规则,command名须准确,args传参、context设条件可提升精准度,json语法错误会导致红条报错。

怎么打开正确的配置文件
Sublime 的快捷键不是在设置菜单里点几下就能改的,必须编辑 User.sublime-keymap 文件——它才是你唯一该动的地方。默认快捷键藏在左侧只读文件里,改了也没用,还可能被下次更新覆盖。
- 操作路径统一是:Preferences → Key Bindings,别找错入口
- 打开后你会看到左右两个文件,**只在右边(User)写内容**,左边默认文件连保存按钮都没有
- 首次打开时右侧通常是空的,但必须填一个合法 JSON 数组,哪怕只加一条规则,也得用方括号
[ ]包裹
命令名写错就等于没绑定
快捷键按下去没反应?90% 是 command 字段写错了。Sublime 不会提示“命令不存在”,它只是静默忽略。
- 最稳的办法:按
Ctrl+Shift+P打开命令面板,输入功能关键词(比如“delete line”),看到的那串小写字母加下划线的就是真实命令名,例如run_macro_file或kill_line - 或者打开控制台
Ctrl+`,输sublime.log_commands(True),再手动点一次菜单里的目标操作(比如“Edit → Line → Delete Line”),控制台会直接打出command: run_macro_file这样的日志 - 别信网上搜到的旧教程——像
js_format这种命令,现在主流插件早换成eslint_fix或prettier,名字一错,热键就废
加参数和限制条件才真正好用
光绑个 Ctrl+L 删除整行太粗暴:光标在注释里也删?选中了一段文本还删?这时候就得靠 args 和 context。
-
args是传给命令的字典,比如调用宏文件必须写:"args": {"file": "res://Packages/Default/Delete Line.sublime-macro"} -
context控制触发条件,多个条件是“且”关系。想让Tab只在非注释行补全,就得加:{"key": "preceding_text", "operator": "not_regex_contains", "operand": "^\s*//|^\s*#"} - 想保留原功能又新增行为?比如
Ctrl+D默认是“选中相同词”,你可以加 context 限定为无选区时才复制整行:{"key": "selection_empty", "operator": "equal", "operand": true}
为什么改完没生效、或者报错红条
Sublime 对 JSON 格式极其敏感,一个中文逗号、多一个尾逗号、引号没闭合,都会导致整个用户快捷键文件失效,右下角弹红条提示。
- 检查顺序建议:先看右下角有没有红色报错;没有的话,打开控制台
Ctrl+`看是否提示Invalid key bindings - 常见低级错误:
"keys": ["ctrl+d"]少了外层方括号变成对象;command值用了中文引号;逗号写在最后一个字段后面 - 别用记事本或微信粘贴代码——容易混入全角符号。推荐用 Sublime 自己打开
User.sublime-keymap编辑,它自带 JSON 高亮和基础校验
真正麻烦的从来不是加一条快捷键,而是当你开始组合 context + regex_contains + 多平台修饰符(super vs ctrl)时,测试成本会陡增。Mac 用户尤其要注意,super 在命令里不能写成 cmd 或 ⌘,否则照样不认。










