sublime text 自定义快捷键需编辑 user.sublime-keymap 文件,确保为合法 json 数组格式;command 名须通过命令面板或控制台获取;覆盖默认键位应慎用 context 限定或改用新组合键。

Sublime Text 自定义快捷键不是“改配置”,而是往 User.sublime-keymap 里加合法 JSON 规则——写错一个逗号、多一个空格、用错引号,快捷键就完全不响应。
怎么打开并确保编辑的是正确文件
Preferences → Key Bindings 打开后,左侧是只读的默认绑定(如 Default (Windows).sublime-keymap),右侧才是你要编辑的 User.sublime-keymap。首次打开时它常为空,但必须是合法 JSON 数组格式:哪怕只加一条规则,也得用方括号 [ ] 包裹。
- 别手误点左文件去改——改了也没用,重启就重置
- 右下角弹红字?八成是 JSON 格式错误:检查逗号是否多写、引号是否闭合、有没有混入中文标点
- 保存后立即生效,不用重启、不用 reload,按一下试试就行
command 名写错 = 快捷键完全失效
命令名不是靠猜或搜旧教程,js_format 这类旧名早已被插件弃用,现在常见的是 eslint_fix 或 black。最稳方法只有两个:
- 按
Ctrl+Shift+P打开命令面板,输入功能关键词(如 “delete line”),看到的完整命令标识就是你要填的command值 - 或者打开控制台
Ctrl+`,输入sublime.log_commands(True),再手动点一次菜单里的目标操作(比如 Edit → Line → Delete Line),控制台会输出类似command: run_macro_file {"file": "res://Packages/Default/Delete Line.sublime-macro"} - 注意:原生“删除整行”不是
delete_line,而是run_macro_file+args.file路径;直接写错名,保存了也白搭
覆盖默认键位前先想清楚后果
Ctrl+D 默认是“选择相同词”,改成 duplicate_line 后,多光标功能就没了。硬覆盖高频键,等于自废武功。
- 优先换组合键:比如用
Ctrl+Alt+D代替Ctrl+D,避开系统级劫持(某些 Windows 输入法会吞掉Ctrl+Alt) - 真要复用,必须加
context限定条件。例如让Ctrl+D只在无选区时复制行:{"key": "selection_empty", "operator": "equal", "operand": true} -
context多条件是“且”关系;想实现“或”,得拆成两条独立规则 - 鼠标快捷键(如中键粘贴)不在这份文件里管,得另建
Default.sublime-mousemap
args 和 context 的实际写法容易漏掉细节
很多实用功能依赖参数和上下文判断,但格式稍有偏差就静默失败。
-
args必须是字典,且嵌套在命令对象里,不能平级写。正确:"args": { "overlay": "goto", "text": "@" };错误:"args": "overlay=goto" - 正则匹配注释行要用
not_regex_contains,比如屏蔽//或#开头的行:{"key": "preceding_text", "operator": "not_regex_contains", "operand": "^\s*//|^\s*#"} - 平台修饰符别写错:Windows/Linux 用
ctrl,macOS 用super(不是cmd);Shift永远是小写shift,不是Shift
最常被忽略的是:context 判断基于光标位置、当前语法、是否有选区等实时状态,而这些状态在不同插件或语法高亮下可能不一致——建议先在纯文本或 Python 文件里验证,再推广到其他类型文件。











