sublime text自定义快捷键必须编辑user.sublime-keymap文件,通过preferences → key bindings打开右侧可编辑面板,以合法json数组格式添加keys和command字段,保存后即时生效;命令名需准确,避免冲突与语法错误。

Sublime Text 的快捷键不能直接在设置面板里改,必须编辑 Default.sublime-keymap 或 Default (Windows).sublime-keymap 这类文件,且必须放在 Packages/User/ 目录下才能覆盖默认行为。
快捷键配置文件在哪、怎么打开
别手动去文件系统里翻路径——容易进错目录或改错文件。最稳的方式是:
- 按
Ctrl+Shift+P(macOS 是Cmd+Shift+P)打开命令面板 - 输入
Preferences: Key Bindings,回车 - 右侧用户面板(User)就是你要编辑的
Default.sublime-keymap文件
这个文件默认为空,你添加的每一条规则都会叠加到左侧默认键位上。注意:左侧 Default 面板是只读的,改了也没用。
快捷键 JSON 格式怎么写才不报错
每条快捷键是一个 JSON 对象,必须包含 keys 和 command 两个字段,常见错误包括:
-
keys必须是字符串数组,比如["ctrl+alt+o"],不能写成"ctrl+alt+o"(单字符串)或["Ctrl+Alt+O"](大小写敏感,一律小写) -
command值必须是 Sublime 已注册的命令名,比如"toggle_comment",不是类名ToggleCommentCommand,也不是函数名toggle_comment() - 如果命令需要参数,必须用
args字段包裹,例如:{"command": "insert", "args": {"characters": "// "}} - JSON 末尾不能有多余逗号,双引号必须是英文,
key和command拼写不能有空格或连字符
示例:把 Ctrl+Shift+K 改为删除当前行(原为删整行):
[
{
"keys": ["ctrl+shift+k"],
"command": "run_macro_file",
"args": {"file": "res://Packages/Default/Delete Line.sublime-macro"}
}
]
如何绑定带 context 的快捷键(比如只在编辑区生效)
很多快捷键需要限定作用域,否则可能在命令面板、侧边栏里误触发。这时得加 context 字段:
-
"key": "selector"最常用,值是作用域字符串,比如"source.python"表示只在 Python 文件中生效 -
"key": "setting"可检查编辑器状态,如"auto_complete_visible"判断补全框是否弹出 -
"operator": "equal"和"operand": true组合使用,不能漏掉operand
示例:只在非注释区域按 Tab 时缩进,注释里 Tab 插入制表符:
[
{
"keys": ["tab"],
"command": "indent",
"context": [
{ "key": "selector", "operator": "not_equal", "operand": "comment" }
]
}
]
改完快捷键没反应?先查这三件事
多数“改了无效”问题都出在加载机制或冲突上:
- 保存后不用重启,但若之前有插件也绑了相同快捷键(比如 Emmet),它会优先拦截,得看控制台日志(
Ctrl+`)里有没有Key event not handled提示 - Mac 上
Cmd键对应的是super,不是cmd;Windows/Linux 的Ctrl在 macOS 上要写成super才能映射过去 - 如果用了多套键位方案(比如 VSCode 风格包),它们可能自带
Default (OS).sublime-keymap,你的自定义文件得确保名字匹配当前系统,否则不会加载
真正麻烦的是跨平台一致性——同一份配置在 Windows 和 macOS 上行为不同,因为 super 在两边指向不同物理键,且系统级快捷键(如 Spotlight)会劫持部分组合。这种时候,不如分 OS 写两套文件,靠文件名自动识别。











