键绑定
键绑定将按键映射到命令。
另请参阅
文件格式
键绑定存储在 .sublime-keymap
文件中,并使用 JSON 定义。键映射文件可以位于包中的任何位置。
键映射文件命名
任何名为 Default.sublime-keymap
的键映射始终在所有平台上应用。
此外,每个平台可以选择拥有自己的键映射
Default (Windows).sublime-keymap
Default (OSX).sublime-keymap
Default (Linux).sublime-keymap
Sublime Text 会忽略任何名称不符合上述模式的 .sublime-keymap
文件。
键绑定的结构
键映射是键绑定的数组。这些都是键绑定中的有效元素
keys
: 一个区分大小写的按键数组。可以使用 +
符号指定修饰符。可以通过向数组添加元素来构建和弦(例如,["ctrl+k","ctrl+j"]
)。模糊和弦通过超时来解决。
command
: 要执行的命令的名称。
args
: 要传递给 command
的参数字典。键必须是 command
的参数名称。
context
: 确定特定上下文的条件数组。所有条件必须评估为 true
,上下文才能处于活动状态。有关更多信息,请参见下面的 上下文结构。
以下是一个示例
{ "keys": ["shift+enter"], "command": "insert_snippet", "args": {"contents": "\n\t$0\n"}, "context":
[
{ "key": "setting.auto_indent", "operator": "equal", "operand": true },
{ "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
{ "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true },
{ "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true }
]
}
上下文结构
key
: 要查询其值的上下文的名称。
operator
: 要对 key
的值执行的测试类型。默认为 equal
。
operand
: key
返回的结果将针对此值进行测试。
match_all
: 要求测试对所有选择都成功。默认为 false
。
上下文键
插件可以提供任意键。因此,本节仅介绍 Sublime Text 自身提供的键。
auto_complete_visible
: 如果自动完成列表可见,则返回 true
。
has_next_field
: 如果有下一个片段字段可用,则返回 true
。
has_prev_field
: 如果有上一个片段字段可用,则返回 true
。
last_command
: 返回最后运行的命令的名称。
num_selections
: 返回选择的数量。
overlay_visible
: 如果任何叠加层可见,则返回 true
。
panel_visible
: 如果任何面板可见,则返回 true
。
following_text
: 对选定文本及其后的文本(直到行尾)进行测试。
preceding_text
: 对行上的文本(直到并包括选择)进行测试。
selection_empty
: 如果选择是空区域,则返回 true
。
setting.x
: 返回 x
设置的值。x
可以是任何字符串。
text
: 将测试范围限制在选定的文本。
selector
: 返回当前作用域的名称。
panel_has_focus
: 如果面板具有输入焦点,则返回 true
。
panel
: 如果作为 operand
给定的面板可见,则返回 true
。
上下文运算符
equal
, not_equal
: 测试相等性。
regex_match
, not_regex_match
: 与正则表达式匹配(完全匹配)。
regex_contains
, not_regex_contains
: 与正则表达式匹配(部分匹配)。
可绑定键
键绑定中的键可以通过符号或特殊键的名称来指定。符号不能与修饰符组合。例如,B
将捕获任何插入 B
字符的键序列,但 ctrl+B
无效,需要写成 ctrl+shift+b
。
以下是特殊键的名称列表
键 | ||
---|---|---|
up | keypad0 | f1 |
down | keypad1 | f2 |
right | keypad2 | f3 |
left | keypad3 | f4 |
insert | keypad4 | f5 |
home | keypad5 | f6 |
end | keypad6 | f7 |
pageup | keypad7 | f8 |
pagedown | keypad8 | f9 |
backspace | keypad9 | f10 |
delete | keypad_period | f11 |
tab | keypad_divide | f12 |
enter | keypad_multiply | f13 |
pause | keypad_minus | f14 |
escape | keypad_plus | f15 |
space | keypad_enter | f16 |
clear | f17 | |
sysreq | browser_back | f18 |
break | browser_forward | f19 |
context_menu | browser_refresh | f20 |
browser_stop | f21 | |
browser_search | f22 | |
browser_favorites | f23 | |
browser_home | f24 |
修饰符
shift
ctrl
或control
alt
super
(**Windows**:Windows 键,**MacOS**:Command 键)primary
(**Windows**:Control 键,**MacOS**:Command 键)command
(**仅限 MacOS**)option
(**仅限 MacOS**:与alt
相同)
任意字符绑定
为 <character>
(带尖括号,无修饰符)添加绑定会导致 Sublime Text 为其提供的**所有**字符绑定给定的命令。因此,您应该只将此绑定与伴随的上下文过滤器一起使用。
然后,指定的命令将接收一个额外的 character
参数,其中包含捕获的字符。
关于可绑定键的警告
如果您正在开发一个包,请记住这一点
- Ctrl+Alt+<alphanum> 绝不应在任何 Windows 键绑定中使用。
- Option+<alphanum> 绝不应在任何 macOS 键绑定中使用。
在这两种情况下,否则用户插入非 ASCII 字符的能力将受到影响。
最终用户可以自由地重新映射任何键组合。
命令模式
Sublime Text 提供了一个 command_mode
设置来阻止按键发送到缓冲区。例如,这对于模拟 Vim 的模态行为很有用。
不打算用于命令模式的键绑定(通常是所有键绑定)应包含这样的上下文
{"key": "setting.command_mode", "operand": false}
这样,合法使用命令模式的插件就可以定义适当的键绑定,而不会受到干扰。
键绑定的优先级顺序
键映射文件中的键绑定从底部到顶部进行评估。第一个匹配的上下文获胜。
保持键映射井然有序
Sublime Text 在 Packages/Default
下提供默认键映射。其他包可能包含它们自己的键映射文件。
建议将您的个人键映射文件存储在Packages/User
目录中。
另请参阅
国际键盘
由于 Sublime Text 将键名映射到物理键的方式,键名可能与除美式英语以外的键盘布局中的物理键不对应。
故障排除
要启用与键映射相关的日志记录,请参阅文档了解
- sublime.log_commands(flag)
- sublime.log_input(flag)
这些可能有助于调试键映射。当键组合不触发输入日志时,另一个应用程序或您的操作系统可能在键到达 Sublime Text 之前就捕获了该键。