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