我添加了一个按键绑定,当我在SublimeText中按下“(”时,会将选择器置于括号之间。
{ "keys": ["("], "command": "insert_snippet", "args": {"contents": "(${0:$SELECTION})"}, "context":
[
{ "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
{ "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }
]
},
但是,我想创建一个按键绑定,当我按下空格键并且位于括号之间时,它将(|)变成(|)。
有什么想法吗?
答案 0 :(得分:1)
对于这样的事情,您需要诸如以下的键绑定:
{
"keys": [" "],
"command": "insert_snippet",
"args": {
"contents": " $0 "
},
"context": [
// { "key": "setting.auto_match_enabled", "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 }
],
}
insert_snippet
命令插入一个包含两个空格字符的代码段,光标居中于其中,而context
条目仅在没有选择的情况下使绑定处于活动状态,光标之前的文本结束(
中,光标后的文本以)
开头。
按照本文所述,在这种情况下它将始终处于活动状态,但是如果需要,您也可以在此处取消注释第一个上下文条目,这进一步限制了此绑定仅在打开auto_match_enabled
设置时才处于活动状态。这样一来,只有在输入单个(
字符会自动插入配对字符的情况下,它才有效。