我正在尝试为Sublime Text 3创建自己的语法高亮。它的主要目的是区分用拉丁文脚本编写的文本和用西里尔文脚本编写的文本。我已经安装了AAAPackageControl并阅读tutorial,但由于某些原因我无法使其工作。
这是我写的语法
# [PackageDev] target_format: plist, ext: tmLanguage
---
name: ADVANCED TEXT
scopeName: text.mirkowy
fileTypes: []
uuid: 78dbe755-58eb-4cdf-b954-4438334aedb9
patterns:
- comment: Words in Latin Script
name: latin_text.text.mirkowy
match: [A-Za-z]+
- comment: Words in Cyrillic Script
name: cyrillic_text.text.mirkowy
match: [ЁЂЃЄЅІЇЈЉЊЋЌЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяёђѓєѕіїјљњћќўџҐґ]+
- comment: Numbers
name: numbers.text.mirkowy
match: \d
...
然而,当我按F7将该文件转换为plist时,我不断收到错误并且我不明白为什么(请记住,我对创建自己的语法并不是全新的喜欢) - 这是它的样子:
Input type not specified, auto-detecting... YAML
No target format specified, searching in file... Property List
Parsing YAML... (C:\Users\iyoossaev\AppData\Roaming\Sublime Text 3\Packages\User\mirkowy.YAML-tmLanguage)
Error parsing YAML: while parsing a block mapping
我做错了什么?
答案 0 :(得分:0)
你几乎得到了它,但你的正则表达式存在一个小问题 - 用方括号[ ]
包围的字符类需要在括号( )
内。你的“数字”正则表达式\d
在没有parens的情况下正常工作。因此,只需将代码更改为以下内容:
# [PackageDev] target_format: plist, ext: tmLanguage
---
name: ADVANCED TEXT
scopeName: text.mirkowy
fileTypes: []
uuid: 78dbe755-58eb-4cdf-b954-4438334aedb9
patterns:
- comment: Words in Latin Script
name: latin_text.text.mirkowy
match: ([A-Za-z]+)
- comment: Words in Cyrillic Script
name: cyrillic_text.text.mirkowy
match: ([ЁЂЃЄЅІЇЈЉЊЋЌЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяёђѓєѕіїјљњћќўџҐґ]+)
- comment: Numbers
name: numbers.text.mirkowy
match: \d
你应该全力以赴。请注意,我在每个块之间放置了一个空格 - 这不是必需的,但它可以帮助您在视觉上分隔每个块,这在您获得非常复杂的块时非常有用。
如果您想要一些更复杂的.YAML-tmLanguage
语法定义的示例,请立即考虑两个地方。第一个是PackageDev
包中的Syntax Definitions
文件夹。第二个实际上是我的个人项目,Python Improved
语法定义,旨在更好地替代Sublime附带的内置Python语法。您可以在Github上找到PythonImproved.YAML-tmLanguage
的来源。如果您对语法设计有任何疑问,请随意在那里打开issue,或者在此处提出新问题。