文档 键绑定
Sublime Merge 中的键绑定由以 .sublime-keymap 结尾的文件定义。键绑定使用 JSON,顶层结构为数组。每个绑定都是一个 JSON 对象。
示例
以下是 .sublime-keymap 文件格式的示例。
[
{
"keys": ["super+shift+b"],
"command": "show_command_palette",
"args": {"command": "create_branch"}
},
{
"keys": ["super+f"], "command": "toggle_search",
"context": [{"operator": "not_equal", "key": "merge_mode"}]
},
{ "keys": ["super+left"], "command": "navigate_back" },
{ "keys": ["super+right"], "command": "navigate_forward" },
]
绑定
每个键绑定需要两个键,"keys" 和 "command"。要将参数传递给命令,应指定 "args" 键。要将键绑定限制在特定情况下,必须包含 "context" 键。
"keys" 键
"keys" 值必须是字符串数组,其中每个字符串包含一个按键,由一个键和任何修饰符组成。当数组中存在多个按键时,只有按顺序执行按键才会调用该命令。
用于 Escape 键的键绑定
{
"keys": ["escape"],
"command": "noop"
}
用于带有修饰符 Ctrl 的键 A 的键绑定
{
"keys": ["ctrl+a"],
"command": "noop"
}
修饰符
以下修饰符可以与每个按键的键名组合。
ctrlcontrolalt-
altgr- Linux 4050 option- Maccommand- Mac-
super- Windows 和 Linux 上的 Windows 键,或 Mac 上的 ⌘ -
primary- Windows 和 Linux 上的 Ctrl,或 Mac 上的 ⌘
键名
键名由键上打印的(非移位)字符或键名指定
abcdefghijklm
nopqrstuvwxyz
0123456789
,.\/;'`+-=[]updownleftrightinserthomeendpageuppagedownbackspacedeletetabenterpauseescapespace
keypad0keypad1keypad2keypad3keypad4keypad5keypad6keypad7keypad8keypad9keypad_periodkeypad_dividekeypad_multiplykeypad_minuskeypad_pluskeypad_enterclear
f1f2f3f4f5f6f7f8f9f10f11f12f13f14f15f16f17f18f19f20
"command" 键
"command" 键指定在检测到按键时要执行的命令的名称。
{
"keys": ["super+left"],
"command": "navigate_back"
}
目前没有所有内置命令的编译列表。许多命令的名称可以通过查看 Default ({PLATFORM_NAME}).sublime-keymap 和 Main.sublime-menu 文件来找到,这些文件位于 Default - Merge.sublime-package 和 Default.sublime-package 包中。 请参阅 包文档,了解有关查找包和查看内容的信息。
"args" 键
要发送给 "command" 键的参数可以通过 "args" 键下的 JSON 对象指定。
{
"keys": ["super+shift+b"],
"command": "show_command_palette",
"args": {"command": "create_branch"}
}
"context" 键
为了允许键绑定根据情况以不同方式做出反应,"context" 键允许指定一个或多个必须评估为 true 的条件,以便键绑定处于活动状态。
"context" 值是对象的数组。每个对象都必须包含一个 "key" 键,该键具有字符串值。键是预定义值列表之一,可以使用 "operator" 和 "operand" 进行比较。默认运算符为 "equal",默认操作数为 true。
对于处理选择的"key"值,支持一个额外的键"match_all"。默认值为false,这意味着条件只需要对单个选择求值为真。如果"match_all"为true,则条件必须对所有选择求值为真。
以下是有效的上下文"key"值列表
- "search_mode"
-
如果界面处于搜索模式
有效运算符:"equal","not_equal"
运算符类型: 布尔值 - "blame_mode"
-
如果界面正在指责文件
有效运算符:"equal","not_equal"
运算符类型: 布尔值 - "tree_mode"
-
如果界面显示提交的树
有效运算符:"equal","not_equal"
运算符类型: 布尔值 - "merge_mode"
-
如果界面显示合并工具
有效运算符:"equal","not_equal"
运算符类型: 布尔值 - "can_commit"
-
如果用户可以提交
有效运算符:"equal","not_equal"
运算符类型: 布尔值 - "is_editing_commit"
-
如果用户正在编辑提交
有效运算符:"equal","not_equal"
运算符类型: 布尔值 - "has_modified"
-
如果工作目录中存在修改过的文件
有效运算符:"equal","not_equal"
运算符类型: 布尔值 - "has_untracked"
-
如果工作目录中存在未跟踪的文件
有效运算符:"equal","not_equal"
运算符类型: 布尔值 - "has_staged"
-
如果一个或多个文件已被暂存
有效运算符:"equal","not_equal"
运算符类型: 布尔值 - "command_status_visible"
-
如果命令状态覆盖当前显示
有效运算符:"equal","not_equal"
运算符类型: 布尔值 - "overlay_visible"
-
如果覆盖层(命令面板或命令状态)当前显示
有效运算符:"equal","not_equal"
运算符类型: 布尔值 - "control"
-
控件的名称,目前仅支持
"text_control"
有效运算符:"equal","not_equal"
运算符类型: 字符串 - "is_blame"
-
如果指责文本控件处于焦点状态
有效运算符:"equal","not_equal"
运算符类型: 布尔值 - "is_staged"
-
如果暂存的差异控件处于焦点状态
有效运算符:"equal","not_equal"
运算符类型: 布尔值 - "is_diff"
-
如果差异控件处于焦点状态
有效运算符:"equal","not_equal"
运算符类型: 布尔值 - "collapsible"
-
如果焦点可以折叠
有效运算符:"equal","not_equal"
运算符类型: 布尔值
用户绑定
用户可以通过在他们的Packages/User/目录中创建一个名为Default.sublime-keymap的文件来自定义他们的键绑定。
例如,以下操作将创建一个键绑定,通过Super+Shift+g清理当前仓库。
[
{
"keys": ["super+shift+g"],
"command": "git",
"args": {"argv": ["gc"]}
}
]