
Sublime快捷键只能通过用户配置文件覆盖默认或插件键位,不可直接修改只读默认文件;command名需从默认键位或命令面板中准确获取;context可添加触发条件提升灵活性;禁用键位可用"unbound"命令。
Sublime 的默认快捷键文件(Default (Windows).sublime-keymap 等)是只读的,你无法直接编辑它。真正可行的做法是在用户配置中添加同名 command 的新键位——系统加载时会后加载覆盖前加载,你的设置自动生效,原键位随之失效。
User.sublime-keymap(可编辑)command 名写错命令名错一个字母,快捷键就等于废了。最可靠的方式不是靠记忆或猜,而是从系统里“抄”出来:
Ctrl+F 搜索功能关键词,比如搜 delete_line,就能看到完整绑定:{"keys": ["ctrl+shift+k"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Line.sublime-macro"}}
Ctrl+Shift+P 输入功能名(如 “toggle sidebar”),看到带 ⌨️ 图标的那一行,后面就是它的真实 command 名:toggle_side_bar
Ctrl+`)执行 sublime.log_commands(True),再手动触发一次功能,控制台会打印出实际调用的 command 和参数光靠 keys 和 command 不够灵活。比如你想让 Tab 在有选中文本时不补全、只缩进,就得加 context 限定触发条件:
[{
"keys": ["tab"],
"command": "indent",
"context": [
{ "key": "selection_empty", "operator": "equal", "operand": false }
]
}]
context 是个数组,每项是一个判断条件;只有全部满足才执行命令selection_empty(无选中)、auto_complete_visible(补全框是否弹出)、preceding_text(光标前文本,支持正则)context:条件越复杂,匹配开销略增;调试困难时,先关掉 context 看基础键位是否生效很多插件(如 Pretty JSON、JsPrettier)自带快捷键,它们和默认键位一样,都可通过用户文件覆盖。但要注意优先级和副作用:
User.sublime-keymap 里写的同 command 规则依然有效EventListener),这类无法用 JSON 覆盖,得去插件源码或设置里关掉"command": "unbound",比如:{"keys": ["ctrl+shift+p"], "command": "unbound"}
最常被忽略的是 JSON 格式校验:
