Sublime Text 3 中的自定义语法高亮 - 无法转换

Custom Syntax Highlighting in Sublime Text 3 – cannot convert

我正在尝试为 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

我做错了什么?

您几乎明白了,但是您的正则表达式存在一个小问题 - 被方括号 [ ] 包围的字符 类 需要在圆括号 ( ) 中。您的 "Numbers" 正则表达式 \d 在没有括号的情况下工作正常。因此,只需将您的代码更改为以下内容:

# [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

你应该准备就绪。请注意,我在每个块之间放置了一个空白 space - 这不是必需的,但它可以帮助您在视觉上分隔每个块,这在您获得非常复杂的块时非常有用。

如果您想要一些更复杂的 .YAML-tmLanguage 语法定义的示例,您会立即想到两个地方。第一个是 Syntax Definitions folder in the PackageDev package itself. The second is actually in a personal project of mine, the Python Improved syntax definition which aims to be a much better replacement for the built-in Python syntax that ships with Sublime. You can find the source for PythonImproved.YAML-tmLanguage on Github. Feel free to open an issue 如果您对语法设计有任何疑问,或者在这里提出一个新问题。

祝你好运!