在哪里可以找到Sublime2(或textMate?)的范围列表

时间:2012-05-31 13:37:11

标签: textmate sublimetext

在.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>

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

7 个答案:

答案 0 :(得分:76)

从当前版本的&#34;命名约定&#34;复制/粘贴(但将HTML转换为Markdown); TextMate Language Grammar Guide 的部分:

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

答案 1 :(得分:32)

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

但是,如果在SublimeText 2中按Shift + Ctrl + P,屏幕底部的状态栏将显示应用于光标位置后面的字符的所有范围键的综合列表。

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

答案 2 :(得分:14)

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

安装包控件

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

显示当前范围的包

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

安装上述软件包之一

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

答案 3 :(得分:11)

范围来自tmLanguage文件,这些文件对于每种语法都不同。您可以在http://manual.macromates.com/en/language_grammars

找到范围命名约定列表

答案 4 :(得分:5)

除了已发布的优秀答案外,TMTheme Editor范围统计信息标签显示了其236种颜色主题中所有范围的有用列表,其中包含最常支持的范围在顶部。

答案 5 :(得分:4)

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

答案 6 :(得分:1)

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

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

您可以检查主题以查看其功能,转到“首选项 - >浏览包”以打开存储包的文件夹。我安装了“Theme - Phoenix”,它下面有一个文件夹和一个“Color Scheme”文件夹。在其中一个主题文件中,我发现了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相同。