键绑定
版
Sublime Text 中的键绑定由以 .sublime-keymap 结尾的文件定义。键绑定使用 JSON,顶层结构为数组。每个绑定都是一个 JSON 对象。
示例🔗
以下是一个 .sublime-keymap 文件格式的示例。
[
{
"keys": ["super+ctrl+m"],
"command": "convert_syntax"
},
{
"keys": ["super+shift+9"],
"command": "set_layout",
"args":
{
"cols": [0.0, 0.33, 0.66, 1.0],
"rows": [0.0, 0.33, 0.66, 1.0],
"cells":
[
[0, 0, 1, 1], [1, 0, 2, 1], [2, 0, 3, 1],
[0, 1, 1, 2], [1, 1, 2, 2], [2, 1, 3, 2],
[0, 2, 1, 3], [1, 2, 2, 3], [2, 2, 3, 3]
]
}
},
{
"keys": ["super+alt+up"],
"command": "noop",
"context":
[
{"key": "panel", "operand": "find"},
{"key": "panel_has_focus"},
]
}
]
绑定🔗
每个键绑定需要两个键,"keys" 和 "command"。要将参数传递给命令,应指定 "args" 键。要将键绑定限制在特定情况下,必须包含 "context" 键。
"keys" 键🔗
"keys" 值必须是一个字符串数组,其中每个字符串包含一个按键,由一个键和任何修饰符组成。当数组中存在多个按键时,只有按顺序执行这些按键才会调用命令。
用于 Escape 键的键绑定
{
"keys": ["escape"],
"command": "noop"
}
用于带有修饰符 Ctrl 的键 A 的键绑定
{
"keys": ["ctrl+a"],
"command": "noop"
}
修饰符🔗
以下修饰符可以与每个按键的键名组合使用。
ctrlcontrolaltoption- Maccommand- Macsuper- Windows 和 Linux 上的 Windows 键,或 Mac 上的 ⌘primary- Windows 和 Linux 上的 Ctrl,或 Mac 上的 ⌘
键名🔗
- 键名由(非移位)字符指定
打印在键上,或键名
abcdefghijklm
nopqrstuvwxyz
0123456789
,.\/;'`+-=[]updownleftrightinserthomeendpageuppagedownbackspacedeletetabenterpauseescapespace
keypad0keypad1keypad2keypad3keypad4keypad5keypad6keypad7keypad8keypad9keypad_periodkeypad_dividekeypad_multiplykeypad_minuskeypad_pluskeypad_enterclear
f1f2f3f4f5f6f7f8f9f10f11f12f13f14f15f16f17f18f19f20
"command" 键🔗
"command"键指定要执行的命令的名称检测到按键时执行。该命令可以是内置命令,也可以是插件实现的命令。
{
"keys": ["ctrl+a"],
"command": "select_all"
}
目前还没有所有内置命令的编译列表。许多命令的名称可以通过查看 Default ({PLATFORM_NAME}).sublime-keymap 文件中的 Default/ 包来找到。
"args" 键🔗
要发送到 "command" 键的参数可以通过 "args" 键下的 JSON 对象指定。
{
"keys": ["primary+shift+b"],
"command": "build",
"args": {"select": true}
}
"context" 键🔗
为了允许键绑定根据情况的不同而做出不同的反应,"context" 键允许指定一个或多个必须评估为真的条件,以便键绑定处于活动状态。
“context” 值是一个对象数组。每个对象必须包含一个 key 键,该键具有字符串值。键是预定义值列表中的一个,可以使用 operator 和 operand 进行比较。
如果 key 支持相等运算符,则 operator 必须是以下之一:equal 或 not_equal。对于匹配,它必须是以下之一:regex_match、not_regex_match、regex_contains 或 not_regex_contains。默认的 operator 是 equal,默认的 operand 是 true。
对于处理选择的 key 值,支持一个额外的键 match_all。默认值为 false,这意味着条件只需要对单个选择求值为真。如果 match_all 为 true,则条件必须对所有选择求值为真。
以下是有效的上下文 key 值列表
键 |
操作数 |
运算符 |
匹配所有 |
描述 |
|---|---|---|---|---|
|
|
相等 |
否 |
如果自动完成下拉菜单可见 |
|
|
相等 |
是 |
一个 选择器,用于匹配当前行末尾的范围名称 |
|
|
匹配 |
是 |
选择后的文本 |
|
|
相等 |
否 |
如果选择是片段中的一个字段,并且存在后续字段 |
|
|
相等 |
否 |
如果选择是片段中的一个字段,并且存在前一个字段 |
|
|
相等 |
否 |
如果用户当前正在录制宏 |
|
|
相等 |
否 |
最后运行的命令的名称 |
|
|
相等 |
否 |
最后运行的修改缓冲区的命令的名称 |
|
|
相等 |
否 |
当前缓冲区中的选择数量 |
|
|
相等 |
否 |
如果当前正在显示弹出窗口 |
|
|
匹配 |
是 |
选择前的文本 |
|
|
相等 |
否 |
如果缓冲区被标记为只读 |
|
|
相等 |
是 |
如果当前选择不包含任何字符 |
|
|
相等 |
是 |
一个 选择器,用于匹配选择的范围名称 |
|
|
匹配 |
是 |
选择的文本 |
|
|
相等 |
否 |
当前面板的名称 |
|
|
相等 |
否 |
如果面板可见 |
|
|
相等 |
否 |
如果面板可见且具有焦点 |
|
|
相等 |
否 |
如果快速面板可见 |
用户绑定🔗
用户可以通过在他们的 Packages/User/ 目录中创建一个名为 Default.sublime-keymap 的文件来自定义他们的键绑定。
例如,以下操作将创建一个键绑定,用于通过 Ctrl+Shift+` 显示未保存的更改(如果有)。
[
{
"keys": ["ctrl+shift+`"],
"command": "diff_changes"
}
]