键绑定
版
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"
}
修饰符🔗
以下修饰符可以与每个按键的键名组合使用。
ctrl
control
alt
option
- Maccommand
- Macsuper
- 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": ["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"
}
]