.tmlanguage
文件通过定义键值对列表来工作。正则表达式是键,语法类型是值。这是通过以下XML方式完成的:
<key>match</key>
<string>[0-9]</string>
<key>name</key>
<string>constant.numeric</string>
我的主要问题是:如果要由Sublime之类的文本编辑器使用该文件,是否存在一个列表列表可以代替constant.numeric
? 最佳答案
有关基本介绍,请查看TextMate手册的Language Grammars部分。 Naming Conventions部分描述了一些基本范围,例如comment
,keyword
,meta
,storage
等。然后可以对这些类进行子类化以提供尽可能多的详细信息,例如constant.numeric.integer.long.hexadecimal.python
。但是,请务必注意,这些规则不是一成不变的规则,而只是建议。当您浏览不同的语言定义并看到例如所有不同的函数作用域方式-meta.function-call
,support.function.name
,meta.function-call punctuation.definition.parameters
等时,这将变得显而易见。
了解范围的最佳方法是检查现有的.tmLanguage
文件,并浏览不同语言的源代码,并查看在何处分配了哪些范围。 XML格式很难随意浏览,因此我使用了出色的 PackageDev
插件将XML转换为YAML。这样一来,扫描并查看哪些正则表达式描述了哪些作用域就更加容易了:
另一种学习方法是查看不同语言结构的范围,为此,我强烈建议使用 ScopeAlways
。安装并激活后,只需放置光标,状态栏中就会显示适用于该特定位置的示波器。这在设计配色方案时特别有用,因为您可以轻松查看哪些选择器将突出显示感兴趣的语言功能。
如果您有兴趣,这里使用的配色方案是Neon,我设计了它来使尽可能多的语言看起来尽可能好,涵盖尽可能多的范围。随意浏览它,以了解如何突出显示不同的语言元素;这也可以帮助您设计.tmLanguage
使其与其他语言保持一致。
希望所有这些对您有帮助,祝您好运!
关于syntax - tmlanguage关键字类型是否有任何标准?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23463803/