比如:我在"( )"内输入完成后,怎样让光标跳到括号外?
好像 eclipse 上直接按 Enter 键就可以跳到括号外,sublime 用什么快捷键呀?
有个插件叫 auto semicolon,在括号内输入分号,会自动把光标移到行尾然后再输入分号,不过这玩意对 Ruby 和 Python 没用…… 我用 Sublime 写 Ruby 的时候一般用 Vim 模式,括号内输入完了就直接 Esc 然后 o,切到下一行。
[
{ "keys": ["enter"], "command": "move", "args": {"by": "characters", "forward": true}, "context":
[
{ "key": "following_text", "operator": "regex_contains", "operand": "^[)\\]\\>\\'\\\"]", "match_all": true },
]
}
]
我用这个 key setting 光标右边为括号一类的字符时候 按 enter 来跳过一个字符
啊 我之前发的那个 regex 里面 "operand": "^[)\\]\\>\\'\\\"]"
没有包括 }
所有在 {}
中按回车不跳出
其实这个 key setting 就是用回车向右移动一格 不过有两个要求
第一个要求是说光标后的内容必须符合 "^[)\\]\\>\\'\\\"]"
这个 regex。
基本就是光标后为 ) ] > ' "
的时候。
注意是用的是following_text
还有 是 regex_contains
第二个要求是说光标前的内容必须不符合 "^.*\\{$"
这个 regex。
就是说光标的左边不能是 {
这次用的是 preceding_text
和 not_regex_match
所以说其实并没有跳出括号 只是向右移动罢了
这两个 regex 你都可以按照你的需求更改。 我现在用的是这个
[
{"keys": ["enter"], "command": "move", "args": {"by": "characters", "forward": true}, "context":
[
{ "key": "following_text", "operator": "regex_contains", "operand": "^[)\\]\\>\\'\\\"\\ %>\\}\\;\\,]", "match_all": true },
{ "key": "preceding_text", "operator": "not_regex_match", "operand": "^.*\\{$", "match_all": true }
]
}
]
可以去看看 sublime key settings api 的文档
使用 17 楼的脚本会有一个问题,就是在括号中无法用 enter 来自动补全了,我稍微改了一下,这个样子就完美了:
[
{"keys": ["enter"], "command": "move", "args": {"by": "characters", "forward": true}, "context":
[
{ "key": "following_text", "operator": "regex_contains", "operand": "^[)\\]\\>\\'\\\"\\ %>\\}\\;\\,]", "match_all": true },
{ "key": "preceding_text", "operator": "not_regex_match", "operand": "^.*\\{$", "match_all": true },
{ "key": "auto_complete_visible", "operator": "equal", "operand": false }
]
}
]