gpt4 book ai didi

sublimetext2 - 当不在带有指定文件类型的括号中时,如何在等号的两端添加空间?

转载 作者:行者123 更新时间:2023-12-01 10:34:55 25 4
gpt4 key购买 nike

可能吗?例如,当在.py.lua文件中而不是在()中并且我键入=时,st3会在两端自动添加一个空格。例如赋值语句:

a = 1

但如果处于 ()状态,则将其禁用:
func(a=1) 
func(a=1,func(b=1))

最佳答案

您可以通过在=键上创建键绑定(bind)来插入一个空格,然后插入=和另一个空格来执行此操作,该操作将检查:

  • 插入符号处的语法对应于Python或Lua
  • 该行的开头与文本插入符号之间的文本不包含不平衡的括号

  • 如果不满足条件,则不使用键绑定(bind),并且将插入 =,而不会像往常那样包含空格。 (假设对 =键上的其他键绑定(bind)进行了评估,发现它们不适用。)

    脚步
  • 在Sublime Text中,打开Preferences菜单,然后选择Keybindings - User
  • 如果文档不为空,请将文本插入符号移动到文档开头第一个[字符之后。
  • 粘贴在以下内容中:
    { "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 }
    ]
    },
  • 如果文档以前是空的,请在文档的开头键入[,在文档的末尾键入]。这是为了确保它是有效的JSON数组。
  • 保存文件。
  • 在Python或Lua文档中按=键,可以看到当不在不平衡的括号内时它将自动在其周围插入空格。


  • 正则表达式的说明:

    Sublime Text的这一方面使用 PCRE regex flavor provided by the Boost library,它支持递归,因此,我们不必重复自己的步骤即可确定方括号是否平衡。
  • ^行的开头
  • (开始捕获组1
  • ([^()]*+)-占有性地将每个连续的非括号字符捕获到捕获组2
  • (开始捕获组3
  • \(与文字(字符
  • 匹配
  • (?:(?2)|(?3))*递归匹配与捕获组2或3(即递归)相同的正则表达式模式,零次或无限次
  • \)与文字)字符
  • 匹配
  • )结束捕获组3
  • ?+使上一组可选,但所有格
  • )结束捕获组1
  • (?1)*+递归地匹配与捕获组1对应的相同正则表达式模式,零次或无限次
  • 待匹配文本的$末尾-在这种情况下,文本插入符号位于其中,因为使用了preceding_text上下文。

  • 总体效果是,与插入符位置之前的文本插入符所在的行中的以下任何一项为真相匹配:
  • 未使用任何括号
  • 非嵌套的parens被打开和关闭
  • 嵌套的括号全部关闭
  • 没有没有对应的打开括号的结束括号

  • 因为正则表达式存储在JSON中,所以 \字符需要使用额外的 \进行转义,这就是为什么 operand字符串包含 \\(的原因,但我仅在regex说明中引用 \(

    范围选择器

    为确保键绑定(bind)仅在Python和lua上有效,请使用 selector范围和参数 source.python, source.lua。如果有可能将一种语言嵌入另一种语言,则此选择器将匹配 source.pythonsource.lua,或者实际上将两者匹配。

    在Sublime Text中找到一种语言的基本范围的一种方法是,转到文档的开头,将其设置为相关的语法,然后转到 Tools菜单-> Developer-> Show Scope Name。它甚至可以在一个空文件上工作。

    范围选择器是从TextMate借来的,有关它们的更多文档可以在这里找到:
  • TextMate docs
  • SO answer

  • 绑定(bind)文档

    有关键绑定(bind)的更多信息,请参见: http://docs.sublimetext.info/en/latest/reference/key_bindings.html#structure-of-a-key-binding

    我个人认为查看默认的按键绑定(bind)很有用。

    关于sublimetext2 - 当不在带有指定文件类型的括号中时,如何在等号的两端添加空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37450825/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com