Sublime自定义快捷键需在User.sublime-keymap中添加合法JSON规则:通过Preferences→Key Bindings打开右侧文件,确保格式正确(如[])、command名经Ctrl+Shift+P或控制台实测获取,避免覆盖高频键,args和context须严格同级且语法无误。

Sublime 自定义快捷键不是“配置”,而是往 User.sublime-keymap 里加合法 JSON 规则——写错一个逗号、多一个空格、用错引号,快捷键就完全不响应。
怎么打开并编辑正确的 keymap 文件
点菜单 Preferences → Key Bindings,会并排打开两个文件:左侧是只读的默认绑定(如 Default (Windows).sublime-keymap),右侧才是你要编辑的 User.sublime-keymap。首次打开时它常为空,但必须是合法 JSON 数组格式:[ ],哪怕只加一条规则也得包在方括号里。
- 别手误去改左侧文件——改了也没用,重启就重置
- 保存后立即生效,不用重启、不用 reload,按一下就能试
- 右下角弹红字?八成是 JSON 格式错误:检查逗号是否多写、引号是否闭合、有没有混入中文标点
怎么找到真实可用的 command 名
Sublime 不会提示“命令名错了”,它只会静默忽略——按了没反应,90% 是 command 字段填错了。别猜,也别信旧教程里的 js_format 或 beautify,这些大多已失效。
- 最稳方法:按
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"} - 插件命令(如格式化)必须查该插件最新文档或用命令面板实测,
format_code这类名字大概率已失效,实际可能是eslint_fix或black
怎么写带参数或条件的快捷键
args 和 context 不是可有可无的装饰,它们必须作为同级字段,跟 keys 和 command 并列,且格式严格。
-
args是字典,必须嵌套在命令对象里,比如{"keys": ["ctrl+alt+l"], "command": "eslint_fix", "args": {"auto_save": true}} -
context是数组,每个元素是一个条件对象,多个条件是“且”关系;想实现“或”,得拆成两条独立规则 - 常见判断项:
"selection_empty"(是否无选区)、"selector"(当前语法类型,如"source.python")、"preceding_text"(光标前文本) - 屏蔽注释行示例:
{"key": "preceding_text", "operator": "not_regex_contains", "operand": "^\s*//|^\s*#"}
为什么 Ctrl+D 改了就不好用了
高频键(如 Ctrl+S、Ctrl+D、Tab)直接覆盖,等于自废武功。比如把 Ctrl+D 改成 duplicate_line,多光标选词功能就彻底没了。
- 优先换组合键,比如用
Ctrl+Alt+D代替Ctrl+D - 真要复用,就加
context限定触发条件,例如让Ctrl+D只在无选区时复制整行:{"key": "selection_empty", "operator": "equal", "operand": true} - 禁用默认行为需显式设
"command": "unbound",而不是留空或删掉规则
最易被忽略的是:所有键名必须小写、用短横线连接("ctrl+shift+k" ✅,不是 "Ctrl+Shift+K" ❌),所有标点必须英文半角,引号必须英文双引号——这些细节错一个,整条规则就失效。











