共计 2716 个字符,预计需要花费 7 分钟才能阅读完成。
按键绑定为按键与动作建立了映射关系。
文件格式
对于按键绑定的配置存储于后缀为 .sublime-keymap 的文件中,文件中记录的是 JSON 内容。所有按键绑定 配置文件都需要按照如下模式命名:Default (<platform>).sublime-keymap。否则,Sublime Text 将忽略这些文件。
平台相关的键位设置
每一个平台都有它自己的按键配置文件:
Default (Windows).sublime-keymapDefault (OSX).sublime-keymapDefault (Linux).sublime-keymap
也有针对不同的硬件提供商指定的按键配置文件 HCI guidelines.
一个按键绑定项的结构
键位表是一个按键绑定项的数组。接下来将要解释的是按键绑定中的有效构成元素:
keys- 一组大小写敏感的按键组合。可以用
+指定修饰符。向数组中添加元素可以设置组合键,例如:["ctrl+k","ctrl+j"]。 command- 要执行的命令的名称。
args- 传递给
command命令的参数字典。字典中键的名称是command命令的参数名称。 context- 选择性控制按键绑定是否起效的上下文内容数组。只有当所有上下文都为真时,按键绑定才能被触发。请参考下面的 上下文的结构 内容来了解更多内容。
下面是一个说明上面提到的大部分特性的例子:
{ "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进行测试的类型。 operand- 与
key的结果进行测试的值。 match_all- 需要多所有选择都进行测试。默认值为
false。
上下文操作数
auto_complete_visible- 如果自动不全列表可见就返回
true。 has_next_field- 当下一个代码片段域可用时返回
true。 has_prev_field- 当上一个代码片段域可用时返回
true。 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- 如果指定的面板可用于作为操作数的话返回 “true“
上下文操作符
equal,not_equal- 测试是否相等。
regex_match,not_regex_match- 与一个正则表达式进行匹配。
regex_contains,not_regex_contains- 与一个正则表达式进行匹配(检测是否包含)。
命令模式
Sublime Text 提供一个称为 command_mode(命令模式)的设置项,启用这个设置可以阻止按键内容 被送往缓冲区。这个设置项在模拟 Vim 的模式功能的时候很有用处。
可绑定的按键
按键可以通过字面值或者名字来指定。你可以在下面找到一个有效名称的列表:
updownrightleftinserthomeendpageuppagedownbackspacedeletetabenterpauseescapespacekeypad0keypad1keypad2keypad3keypad4keypad5keypad6keypad7keypad8keypad9keypad_periodkeypad_dividekeypad_multiplykeypad_minuskeypad_pluskeypad_enterclearf1f2f3f4f5f6f7f8f9f10f11f12f13f14f15f16f17f18f19f20sysreqbreakcontext_menubrowser_backbrowser_forwardbrowser_refreshbrowser_stopbrowser_searchbrowser_favoritesbrowser_home
修饰符
shiftctrlaltsuper(Windows key, Command key…)
关于可绑定按键的警告
如果你正在开发一个包,请谨记下面几点:
Ctrl+Alt+<alphanum>在 Windows 平台上,不要使用Ctrl+Alt+<alphanum>进行任何键位绑定。Option+<alphanum>在 OS X 平台上,不要使用Option+<alphanum>进行任何键位绑定
在以上两种情况下,用户都将在插入非 ascii 字符时遇到问题。
如果你是终端用户,你可以随意重新映射这些按键组合。
让按键映射井井有条
Sublime Text 自带的按键组合存放在 Packages/Default 目录下。其他包组可以包含它们特有的按键 映射文件。对于你自己的键位映射设置而言,推荐的文件存放地址是 Packages/User 目录。
请参考 排序与优先级顺序 以了解关于 Sublime Text 排序文件并进行合并的更多信息
国际化键盘
根据 Sublime Text 将按键名称与物理按键进行映射的方式,此二者在不同平台上可能有不同的配对。