最稳方法是用Ctrl+Shift+P查命令面板中的真实command名;其次用sublime.log_commands(True)在控制台验证;优先查插件文档或默认配置文件定位原始定义。

怎么找到正确的 command 名?
快捷键没反应,八成是 command 写错了——这不是拼写问题,而是 Sublime 内部命令名和你直觉理解的功能名常常不一致。比如“格式化代码”在不同插件里可能是 format_code、js_format 或 prettify,而原生“删除整行”根本不是独立命令,得靠宏文件调用:run_macro_file。
- 最稳的方法:按
Ctrl+Shift+P打开命令面板,输入功能关键词(如“delete line”),看到的完整条目就是真实command名 - 辅助验证:按
Ctrl+`打开控制台,输入sublime.log_commands(True),再手动点一次菜单或右键对应功能,控制台会直接打出它实际执行的command和args - 别抄网上教程里的命令名——很多已过时;优先查你当前安装的插件文档,或打开左侧默认配置文件(
Preferences → Key Bindings左侧)搜关键词定位原始定义
为什么加了快捷键却没生效?
保存后没反应,不是 Sublime 坏了,而是三个地方最容易卡住:
-
JSON格式错误:末尾多逗号、引号不闭合、括号不匹配——保存后右下角会弹红字提示,但很多人忽略它 - 被更高优先级规则拦截:左侧默认文件里已有
"keys": ["f5"]绑定到build,你在右侧也写"keys": ["f5"]却没加context,那你的新规则会被默认规则覆盖(Sublime 从左到右加载,右侧只覆盖同keys的条目) -
context限制太严:比如写了{"key": "selector", "operand": "source.python"},但你在 Markdown 文件里按快捷键,自然不触发——查当前语法按Ctrl+Shift+P→Show Scope Name看实际 scope 值
如何安全覆盖常用快捷键?
想把 Ctrl+D 从“选词”改成“复制整行”,不能硬覆盖,否则日常多光标编辑就废了。得用 context 做条件判断,让同一组按键在不同场景干不同事。
- 判断是否无选中文本:
{"key": "selection_empty", "operator": "equal", "operand": true} - 判断是否在注释里:
{"key": "selector", "operand": "comment"} - 组合使用更精细:下面这条让
Ctrl+D在空选时复制行,有选中时才继续选词
[{
"keys": ["ctrl+d"],
"command": "duplicate_line",
"context": [{"key": "selection_empty", "operator": "equal", "operand": true}]
}, {
"keys": ["ctrl+d"],
"command": "find_under_expand"
}]
Windows 上 Ctrl+Alt+X 类组合总失灵?
这不是 Sublime 的锅,是 Windows 输入法(尤其是微软拼音)、显卡驱动或某些安全软件劫持了 Ctrl+Alt 组合。实测中,Ctrl+Shift 或 Ctrl+Alt+Shift 的兼容性高得多。
- 换键测试:把原本写的
["ctrl+alt+o"]改成["ctrl+shift+o"],立刻能用,说明问题出在系统层 - 避免冲突:不要用
Ctrl+Alt+Del、Ctrl+Alt+Tab等系统级热键变体 -
macOS 用户注意:
super指的是 ⌘ 键,不是ctrl;alt对应 Option 键,别混用










