文档 键绑定

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 - Mac
  • command - 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-keymapMain.sublime-menu 文件来找到,这些文件位于 Default - Merge.sublime-packageDefault.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"]}
    }
]