Sublime Text:范围选择器运算符

时间:2015-11-06 08:16:37

标签: scope operators sublimetext2 sublimetext3 sublimetext

目前在TmThemeEditor登记的243种配色方案中, 我注意到他们几乎都没有使用范围选择器操作符。

对于这样的情况,运算符非常有用:

(text.html | text.xml) & (meta.tag entity)

我认为配色设计师很少使用它们的原因是它们的记录很少。 在ST2的官方文档中根本没有提及它们 或者ST3,或者 unofficial docs for colour schemesunofficial docs for syntax definitions {{3}} 提到范围选择器,但不是运营商。

在哪里可以找到Sublime Text支持的范围选择器运算符的文档?

1 个答案:

答案 0 :(得分:6)

运算符按优先顺序排列(最高位):

( )分组

&交点

-不对称差异(相对补语)

|联盟

,逗号

配色方案文件(.tmTheme)的文件格式继承自TextMate

以下是TextMate文档中关于范围选择器操作符的一些相关链接和引用:

  • Manual: Scope Selectors
    • Excluding Elements
      “我们可以使用减号运算符减去范围选择器以获得(非对称)差异。”
    • Comma
      “当我们想要某些内容匹配几个不同的范围时,我们可以使用逗号对范围选择器进行分组 运营商。例如,要匹配字符串和注释,范围选择器将为:string, comment。“
  • Introduction to scopes
    “也可以对范围选择器进行AND,OR和减法,例如:(a | b) & c - d将选择 范围与d不匹配,并且与cab匹配。“
  • Beta 17 notes: Scope selectors
    “可以对范围选择器执行布尔运算并采用不对称差异 两个范围选择器之间。因此,在上面的示例中,我们希望#上的自定义操作可以扩展 source.ruby string但我们不希望它用于string source(字符串中的嵌入代码)。为了这 我们现在可以将范围设置为:(source.ruby string) - (string source)。我添加了括号 清晰度,它们不是必需的(因为-具有最低优先级)。“

Allan Odgaard(TextMate的创建者)提供 一些非常有用的回答有关范围选择器操作员的问题 TextMate mailing list。该线程已存档 here, 原始邮件在这里: 123456。这种反应特别有用:

  

范围按字面匹配(例如string)。这些可以形成一个   “后代选择器”,例如source.ruby string,以及   后代选择器可以采用联合(|,),交集   (&),或不对称差异(-)。

     

也可以用括号分组。   ,|可以用于联合的原因是,   很久以前就引入了其他运算符(模仿CSS语法),所以   添加&后,我觉得||应该更高   优先级高于,它是优先级最低的运算符,例如:

a - b | c & d, e - f | g & h ⇔ (a - b | c & d), (e - f | g & h)

TextMate支持Sublime Text不支持的其他运算符,包括 *^>$L:R:B:。这些记录在这里: 1234