选择器
版本版本

Sublime Text 中的语法定义使用作用域名称来提供有关标记的元数据。作用域是用点分隔的字符串,从最不具体到最具体指定。例如,PHP 中的 if 关键字可以通过作用域名称 keyword.control.php 指定。标记可以具有一个或多个与其关联的作用域名称。多个作用域名称以有序的方式与标记关联。

本文档涵盖了选择器,它是匹配作用域名称的方法。配色方案、键绑定、API 甚至某些设置都以一种或另一种方式处理选择器。有关标准化作用域名称的信息,请参阅作用域命名文档。

基本匹配🔗

基本选择器指定一个或多个作用域名称,并从最左侧的作用域开始与标记的作用域名称进行匹配。为了使选择器匹配标记的作用域名称,其所有标签必须以相同的顺序出现。

作用域名称

选择器

匹配

keyword.control.php

keyword

keyword.control.php

keyword.control

keyword.control.php

control

否,control != keyword

keyword.control.php

keyword.cont

否,cont != control

keyword.control.php

keyword.control.php.embedded

否,无法匹配 embedded

当选择器具有多个作用域名称时,每个名称必须按顺序匹配标记的作用域名称之一。

作用域名称

选择器

匹配

source.php meta.block.php keyword.control.php

keyword

source.php meta.block.php keyword.control.php

meta keyword

source.php meta.block.php keyword.control.php

keyword meta

否,在 keyword 之后无法匹配 meta

逻辑运算符🔗

除了基于标签前缀匹配来匹配作用域名称之外,选择器还可以指定逻辑运算符。

逻辑或🔗

逻辑或运算符是 |,。如果运算符右侧或左侧的选择器匹配,则表达式将匹配。

作用域名称

选择器

匹配

source.php meta.block.php

text | meta

source.php

text, meta

逻辑与🔗

逻辑与运算符是 &。它要求运算符右侧和左侧的选择器都匹配,表达式才能匹配。这与选择器之间的空格不同,因为空格表示层次结构。

作用域名称

选择器

匹配

source.php meta.block.php keyword.control.php

keyword & meta

source.php meta.block.php

keyword & meta

逻辑非🔗

逻辑非运算符是 -。它要求右侧的选择器不匹配,表达式才能匹配。

作用域名称

选择器

匹配

source.php meta.block.php

source - keyword

source.php meta.block.php keyword.control.php

source - keyword

分组🔗

使用逻辑运算符时,可以使用括号对选择器进行分组。

作用域名称

选择器

匹配

source.php meta.block.php

source - (keyword | storage)

source.php meta.block.php

(source - source.php) | text

运算顺序🔗

运算符具有以下优先级

  • () 分组

  • - 逻辑非

  • & 逻辑与

  • | 逻辑或

  • , 逻辑或

否则,它们按从左到右的顺序排列。所以以下是等效的

a , b & -c | d , e

(a , ((b & (- c)) | d)) , e