文档 键绑定
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"
}
修饰符
以下修饰符可以与每个按键的键名组合。
ctrl
control
alt
-
altgr
- Linux 4050 option
- Maccommand
- Mac-
super
- Windows 和 Linux 上的 Windows 键,或 Mac 上的 ⌘ -
primary
- Windows 和 Linux 上的 Ctrl,或 Mac 上的 ⌘
键名
键名由键上打印的(非移位)字符或键名指定
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
0
1
2
3
4
5
6
7
8
9
,
.
\
/
;
'
`
+
-
=
[
]
up
down
left
right
insert
home
end
pageup
pagedown
backspace
delete
tab
enter
pause
escape
space
keypad0
keypad1
keypad2
keypad3
keypad4
keypad5
keypad6
keypad7
keypad8
keypad9
keypad_period
keypad_divide
keypad_multiply
keypad_minus
keypad_plus
keypad_enter
clear
f1
f2
f3
f4
f5
f6
f7
f8
f9
f10
f11
f12
f13
f14
f15
f16
f17
f18
f19
f20
"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"]}
}
]