56

在 .tmTheme 文件中,范围键定义了如何突出显示元素:

    <dict>
        <key>name</key>
        <string>HTML: Attribute Values</string>
        <key>scope</key>
        <string>meta.tag string.quoted, meta.tag string.quoted constant.character.entity</string>
        <key>settings</key>
        <dict>
            <key>background</key>
            <string>#FFFFFF</string>
            <key>fontStyle</key>
            <string></string>
            <key>foreground</key>
            <string>#2aa198</string>
        </dict>
    </dict>

我在哪里可以找到这些应用程序支持的所有范围的列表,以便我可以创建自己的样式?

4

7 回答 7

85

从TextMate 语言语法指南的“命名约定”部分的当前版本复制/粘贴(但将 HTML 转换为 Markdown):

  • comment——征求意见。
    • line— 行注释,我们进一步专门化,以便可以从范围中提取注释开始字符的类型。
      • double-slash// comment
      • double-dash-- comment
      • number-sign# comment
      • percentage% comment
      • 字符— 其他类型的行注释。
    • block— 多行注释,例如/* … */<!-- … -->
      • documentation— 嵌入式文档。
  • constant——各种形式的常数。
    • numeric— 代表数字的那些,例如42, 1.3f, 0x4AB1U.
    • character— 代表字符的那些,例如&lt;, \e, \031.
      • escape- 转义序列\e就像constant.character.escape.
    • language— 语言提供的常量(通常)是“特殊的”,例如true, false, nil, YES,NO等。
    • other— 其他常量,例如 CSS 中的颜色。
  • entity— 实体是指文档的较大部分,例如章节、类、函数或标签。我们没有将整个实体限定为entity.*(我们meta.*用于此)。但我们确实使用entity.*较大实体中的“占位符”,例如,如果实体是章节,我们将使用entity.name.section章节标题。
    • name——我们正在命名更大的实体。
      • function— 函数的名称。
      • type— 类型声明或类的名称。
      • tag— 标签名称。
      • section— 名称是部分/标题的名称。
    • other——其他实体。
      • inherited-class— 超类/基类名称。
      • attribute-name— 属性的名称(主要在标签中)。
  • invalid——“无效”的东西。
    • illegal— 非法,例如 HTML 中的 & 号或小于号字符(不是实体/标签的一部分)。
    • deprecated— 对于已弃用的东西,例如使用已弃用的 API 函数或使用带有严格 HTML 的样式。
  • keyword- 关键字(当这些不属于其他组时)。
    • control— 主要与流控制有关,如continue, while,return等。
    • operator— 运算符可以是文本(例如or)或字符。
    • other——其他关键词。
  • markup— 这适用于标记语言,通常适用于较大的文本子集。
    • underline——带下划线的文字。
      • link- 这是用于链接的,为了方便起见markup.underline,如果没有专门针对的主题规则,markup.underline.link那么它将继承下划线样式。
    • bold— 粗体文本(强烈且相似的文本最好从该名称派生)。
    • heading— 节标题。可选地提供标题级别作为下一个元素,例如markup.heading.2.html<h2>…&lt;/h2>HTML 中。
    • italic— 斜体文本(强调的和类似的文本最好源自该名称)。
    • list— 列出项目。
      • numbered— 编号列表项。
      • unnumbered— 未编号的列表项。
    • quote— 引用(有时是块引用)文本。
    • raw— 逐字逐句的文本,例如代码清单。通常拼写检查是禁用的markup.raw
    • other— 其他标记结构。
  • meta— 元范围通常用于标记文档的较大部分。例如,声明函数的整行将是meta.function,子集将是storage.type,等entity.name.functionvariable.parameter并且只有后者会被样式化。有时,范围的元部分仅用于限制样式化的更通用元素,但大多数情况下元范围用于范围选择器中以激活捆绑项目。例如,在 Objective-C 中,类的接口声明和实现有一个元作用域,允许相同的选项卡触发器根据上下文进行不同的扩展。
  • storage——与“存储”有关的事情。
    • type— 某物的类型,class, function, int,var等。
    • modifier— 存储修饰符,如static, final,abstract等。
  • string——字符串。
    • quoted— 引用的字符串。
      • single— 单引号字符串:'foo'.
      • double— 双引号字符串:"foo".
      • triple— 三重引号字符串:"""Python""".
      • other— 其他类型的引用:$'shell', %s{...}.
    • unquoted— 对于诸如 here-docs 和 here-strings 之类的东西。
    • interpolated— 被“评估”的字符串:date, $(pwd).
    • regexp— 正则表达式:/(\w+)/.
    • other— 其他类型的字符串(应该很少使用)。
  • support— 框架或库提供的东西应该在下面support
    • function— 框架/库提供的功能。例如NSLog在 Objective-C 中是support.function.
    • class— 当框架/库提供类时。
    • type— 由框架/库提供的类型,这可能仅用于从 C 派生的语言,它具有typedef(and struct)。大多数其他语言将引入新类型作为类。
    • constant— 框架/库提供的常量(魔法值)。
    • variable— 框架/库提供的变量。例如NSApp在 AppKit 中。
    • other- 以上应该是详尽无遗的,但对于其他一切使用support.other.
  • variable——变量。并非所有语言都允许轻松识别(并因此标记)这些。
    • parameter— 当变量被声明为参数时。
    • language— 保留的语言变量,如this, super,self等。
    • other— 其他变量,例如$some_variables.
于 2014-02-20T17:09:15.603 回答
33

编辑:Phrogz 的回答比我在这里的回答好,因为它更准确地回答了所提出的问题。我建议你检查一下!


不幸的是,似乎没有任何如此全面的清单。

但是,如果您Shift+Ctrl+P在 SublimeText 2 中按下,屏幕底部的状态栏将显示适用于紧跟光标位置的字符的所有范围键的完整列表。

您可以使用此方法从 SublimeText 中找到您需要的任何内容的范围键。

更新:下面的评论者Willfregante指出 SublimeText 3 已经改变了。
对于 Windows/Linux,Shift+Ctrl+Alt+P是适当的命令,而在 Mac 上,命令是⌘⌥P.

于 2013-02-16T05:39:03.623 回答
14

您可以使用几个崇高的文本包来执行此操作。

安装包控制

转到https://sublime.wbond.net/并单击“安装”并按照说明安装 sublime text 包管理器。

显示当前范围的包

我知道几个崇高的文本包,它们在状态栏中显示当前范围。

安装上述软件包之一

要使用 sublime text 包管理器安装包,请打开 sublime text 的命令面板 ( ctrl+shift+p) 并选择命令Package Control: Install Package,然后选择上述包之一。

于 2013-08-16T13:12:05.193 回答
11

范围来自 tmLanguage 文件,每种语法都不同。您可以在http://manual.macromates.com/en/language_grammars找到范围命名约定列表

于 2012-06-01T05:05:27.137 回答
6

除了已经发布的出色答案之外, TMTheme 编辑器的Scopes Stats选项卡还显示了一个有用的列表,其中列出了 236 个颜色主题中的所有范围,最常用的范围位于顶部。

于 2014-12-18T19:20:58.450 回答
4

请参阅下面 sublime 网站上的参考指南:

于 2016-09-28T14:09:24.433 回答
2

每种语法都可以命名自己的范围,但它们都基于此列表。例如,您的语法可能会指定这functionstorage.type.function.js范围。如果您的主题直接支持它,它将使用该颜色,否则它将回退到最后storage.type.function尝试在您的主题中找到一种颜色。storage.typestorage

由于您正在创建自己的样式,因此我建议您安装ScopeStatusCTRL+ SHIFT+ P,然后是 Install Package,然后是 ScopeStatus)。使用您想要专注的语法查看文件,执行CTRL++ ,然后“范围SHIFTP在状态栏中显示”。现在您可以将光标移动到各种元素以查看它们提供的范围,您可以使用它们来定义颜色。

您可以检查您的主题以查看它们的作用,转到“首选项->浏览包”以打开存储包的文件夹。我安装了“主题 - Phoenix”,它下面有一个文件夹和一个“配色方案”文件夹。在其中一个主题文件中,我发现了 16 种用于各种范围的颜色:

keyword.operator.class, constant.other, source.php.embedded.line
variable, support.other.variable, string.other.link, entity.name.tag, entity.other.attribute-name, meta.tag, declaration.tag
constant.numeric, constant.language, support.constant, constant.character, variable.parameter, punctuation.section.embedded, keyword.other.unit
entity.name.class, entity.name.type.class, support.type, support.class
string, constant.other.symbol, entity.other.inherited-class, markup.heading
keyword.operator, constant.other.color
entity.name.function, meta.function-call, support.function, keyword.other.special-method, meta.block-level
keyword, storage, storage.type, entity.name.tag.css
invalid
meta.separator
invalid.deprecated
markup.inserted.diff, markup.deleted.diff, meta.diff.header.to-file, meta.diff.header.from-file
markup.inserted.diff, meta.diff.header.to-file
markup.deleted.diff, meta.diff.header.from-file
meta.diff.header.from-file, meta.diff.header.to-file
meta.diff.range

不同的主题可能有不同的设置,第一组中的keyword.operator.class可能有自己的颜色或与meta.diff.range相同。

于 2015-11-22T08:23:33.500 回答