Sublimetext2 当不在具有指定文件类型的括号中时,如何在等号的两端添加空格?
可能吗?例如,当在Sublimetext2 当不在具有指定文件类型的括号中时,如何在等号的两端添加空格?,sublimetext2,sublimetext3,sublimetext,Sublimetext2,Sublimetext3,Sublimetext,可能吗?例如,当在.py和.lua文件中,而不是在()和I键入=时,st3将自动在两端添加一个空格。例如转让声明: a = 1 但如果处于()状态,则会禁用它: func(a=1) func(a=1,func(b=1)) 您可以通过在=键上创建一个键绑定来执行此操作,以插入一个空格,后跟=和另一个空格,该空格将检查: 插入符号处的语法对应于Python或Lua 行首和文本插入符号之间的文本不包含不平衡的括号 如果不满足这些条件,则不使用键绑定,并且将插入=,正常情况下不包含周围的空格。
.py
和.lua
文件中,而不是在()
和I键入=
时,st3将自动在两端添加一个空格。例如转让声明:
a = 1
但如果处于()
状态,则会禁用它:
func(a=1)
func(a=1,func(b=1))
您可以通过在=键上创建一个键绑定来执行此操作,以插入一个空格,后跟
=
和另一个空格,该空格将检查:
- 插入符号处的语法对应于Python或Lua
- 行首和文本插入符号之间的文本不包含不平衡的括号
=
,正常情况下不包含周围的空格。(假设对=
键上的其他键绑定(如果有)进行了评估,发现不适用。)
台阶
首选项
菜单并选择键绑定-用户
[
字符之后{ "keys": ["="], "command": "insert", "args": { "characters": " = " }, "context":
[
{ "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
{ "key": "selector", "operator": "equal", "operand": "source.python, source.lua", "match_all": true },
{ "key": "preceding_text", "operator": "regex_match", "operand": "^(([^()]*+)(\\((?:(?2)|(?3))*\\))?+)(?1)*+$", "match_all": true }
]
},
[
,在文档结尾键入a]
。这是为了确保它是有效的JSON数组正则表达式的解释: 崇高文本的这一方面使用了支持递归的,因此我们不必重复自己来确定括号是否平衡
行的开头^
开始捕获组1(
-占有式地将每个连续的非括号字符捕获到捕获组2中([^()]*+)
开始捕获组3(
匹配文字\(
字符(
递归匹配与捕获组2或3(即递归)对应的相同正则表达式模式,零次或无限次(?:(?2)|(?3))*
匹配文字\)
字符)
结束捕获组3)
将上一组设置为可选但具有所有格?+
结束捕获组1)
占有式递归匹配与捕获组1对应的相同正则表达式模式,零次或无限次(?1)*+
要匹配的文本的结尾-在这种情况下,文本插入符号为,因为使用了前面的文本上下文$
- 不使用paren
- 打开和关闭非嵌套参数
- 嵌套的paren都是封闭的
- 没有没有没有相应打开参数的关闭参数
\
字符需要用一个额外的\
进行转义,这就是为什么操作数
字符串包含\\(
但我在正则表达式解释中只提到\(
)
范围选择器
为了确保keybinding仅在Python和lua上处于活动状态,使用了作用域选择器上下文,参数为source.Python,source.lua
。此选择器匹配source.Python
或source.lua
,或者如果可以将一种语言嵌入另一种语言,则两者都匹配。
找到Sublime文本中语言的基本作用域的一种方法是,转到文档的最开始部分,设置相关的语法,然后转到工具菜单->开发者->显示作用域名称
。它甚至可以处理空文件
范围选择器是从TextMate借来的,有关它们的更多文档可在此处找到:
键绑定文档
有关键绑定的更多信息,请参见此处:
我个人认为,查看默认的键绑定很有帮助