Preferences → Key Bindings 是唯一可靠入口,左侧为只读默认键位,右侧编辑 User.sublime-keymap;须用合法 JSON 数组格式,context 实现作用域限制,command 名需实测获取,格式错误将静默失效。

Preferences → Key Bindings 是唯一入口,别碰文件系统
直接按 Ctrl+Shift+P(macOS 是 Cmd+Shift+P),输入 Preferences: Key Bindings 回车——这是 Sublime 唯一可靠、升级不丢、插件兼容的打开方式。左侧是只读的默认键位(比如 Default (Windows).sublime-keymap),右侧才是你要编辑的 User.sublime-keymap。别去 Packages/User/ 目录下手动找文件,也别点 “Browse Packages” 瞎翻,那些路径容易被更新覆盖或权限干扰。
所有自定义必须写成合法 JSON 数组,空文件也要补 [ ]
首次打开右侧常为空白,这正常,但你不能直接写对象。必须用方括号包裹整个内容,让它成为合法 JSON 数组:
[{"keys": ["ctrl+alt+s"], "command": "save"}]
常见静默失效原因:
- 末尾多了一个逗号(JSON 不允许数组最后一项后有逗号)
- 用了中文引号
“”或全角冒号: -
keys里写了Ctrl+D(必须全小写:"ctrl+d") - Windows 上误把
super当成 Ctrl(super是 Win 键,macOS 才是 Cmd)
项目级绑定不存在,靠 context 模拟作用域
Sublime 没有“项目专属快捷键”这个概念。所谓“给项目切换绑定”,本质是用 context 字段限制触发条件,让快捷键只在特定文件类型或编辑状态下生效。例如:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
[{
"keys": ["ctrl+d"],
"command": "duplicate_line",
"context": [
{"key": "selector", "operand": "source.python"},
{"key": "selection_empty", "operator": "equal", "operand": true}
]
}]
关键点:
-
context是“且”关系:必须同时满足 Python 语法 + 无选区才触发 - 查当前真实 scope:按
Ctrl+Shift+P→ 输入Show Scope Name,光标所在位置会显示类似source.python meta.function.python的完整路径 - 想实现“或”逻辑(比如 Python 或 JS 文件都生效),得拆成两条独立规则,每条配一个
selector - 别写
"selector": "python"这种简写,必须用完整语法名"source.python"
command 名不能猜,必须实测获取
写错 command,快捷键就彻底哑火,Sublime 从不报错。网上搜到的 delete_line、js_format 多已失效。正确做法:
- 按
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"} - 这意味着:仅写
"command": "run_macro_file"不够,还得加"args"字段传入{"file": "res://Packages/Default/Delete Line.sublime-macro"}
复杂点在于:同一功能在不同上下文可能走不同 command;context 写得太宽会误触,太窄又不响应;而 JSON 格式错一个字符,整块配置就失效——它不提示,只沉默。










