跳转到主内容
极星编程网:以代码为星,赴技术山海!

Sublime怎么自定义快捷键 Sublime修改Key Bindings配置【教程】

Sublime自定义快捷键需在User.sublime-keymap中编写JSON格式规则,通过Preferences→Key Bindings打开并编辑右侧文件,保存即生效;command名须用Ctrl+Shift+P或控制台log_commands实测获取,避免覆盖高频键导致功能失效,冲突时优先换组合键或加context限定。 Sublime 的快捷键不是“修改默认配置”,而是靠在
User.sublime-keymap
里写新规则来覆盖——写对就生效,写错就静默失效,不报错也不提醒。 怎么打开并编辑正确的配置文件 点菜单 Preferences → Key Bindings ,会并排打开两个文件:左侧是只读的
Default (Windows).sublime-keymap
(或对应系统名),右侧是可编辑的
User.sublime-keymap
。所有自定义都必须写在这里,改其他地方无效,还可能被更新覆盖。 首次打开时右侧常为空,但必须保持合法 JSON 数组格式——哪怕只加一条规则,也得用方括号
[ ]
包裹,里面是对象列表:
[{"keys": ["ctrl+alt+d"], "command": "duplicate_line"}]
保存后立即生效,不用重启、不用 reload。 右下角弹红字?90% 是 JSON 格式问题:末尾多逗号、引号没闭合、用了中文标点 别手动敲大括号和引号——用编辑器自带的 JSON 高亮或装
SublimeLinter-json
实时校验 想查某功能原本怎么绑的?直接在左侧 Default 文件里搜索关键词,比如
"delete line"
怎么找到准确的 command 名,而不是靠猜 命令名写错,快捷键等于白配。网上搜到的旧名字(比如
js_format
)很可能已废弃,必须实测获取当前版本的真实值。 仿Sublime和notepad++编辑器效果 仿Sublime和notepad++编辑器效果 下载 最稳方法:按
Ctrl+Shift+P
打开命令面板,输入功能关键词(如 “delete line”),看到的条目名就是你要的
command
值(例如
run_macro_file
) 更准的方法:按
Ctrl+`
打开控制台,输入
sublime.log_commands(True)
,再手动执行一次目标操作(比如菜单里点“删除行”),控制台会输出类似:
command: run_macro_file {"file": "res://Packages/Default/Delete Line.sublime-macro"}
插件命令名随版本变化频繁,比如
eslint_fix
可能替代了旧的
fix_js
,必须以控制台日志为准 覆盖高频键(如 Ctrl+D、Ctrl+S)要特别小心 直接覆盖
Ctrl+D
(原为“选词”)或
Ctrl+S
(保存),原有功能就彻底消失,不是变好,是变卡。 优先换组合键:用
["ctrl+alt+d"]
或
["ctrl+shift+delete"]
,避开系统级劫持(某些 Windows 输入法或显卡驱动会吃掉
Ctrl+Alt
) 真要复用,加
context
条件区分场景,例如让
Ctrl+D
在无选区时复制整行,有选区时仍执行原逻辑:
{"keys": ["ctrl+d"], "command": "duplicate_line", "context": [{"key": "selection_empty", "operator": "equal", "operand": true}]}
彻底禁用某个默认键?设
"command": "unbound"
,比如
{"keys": ["ctrl+s"], "command": "unbound"}
带参数和条件的高级绑定怎么写才不报错
args
和
context
不是可有可无的装饰,它们必须作为同级字段,跟
keys
和
command
并列,且格式严格:
args
是字典,必须嵌套在命令对象里,例如格式化代码常用:
{"keys": ["ctrl+alt+f"], "command": "show_overlay", "args": {"overlay": "goto", "text": "@"}}
context
控制生效条件,常见判断项有:
"selection_empty"
、
"preceding_text"
、
"auto_complete_visible"
多个
context
条件是“且”关系;想实现“或”,得拆成两条独立规则 正则匹配要用
"not_regex_contains"
或
"regex_contains"
,比如屏蔽注释行:
{"key": "preceding_text", "operator": "not_regex_contains", "operand": "^\s*//|^\s*#"}
鼠标快捷键不能写在这里,得另建
.sublime-mousemap
文件——这点常被忽略,一写就失效。

相关文章