A!die Software Studio Welcome to A!Die Software Studio

为 Sublime Text 3 创建语法扩展

by adie
2018-09-02 13:51:41

Sublime Text 的核心概念是 scopes, 一个 scope 就是满足一个正则表达式匹配的文本区域. 语法定义文件 .sublime-syntax 会定义一组 scope 的正则表达式和名称. 一个 scope 名称和正则表达式一起组成了一条规则.

scope 本身不会产生任何作用. scope 可以嵌套进行细粒度的划分. 

 

1. 安装 PackageDev:  Ctrl + Shift + P  Package Control: Install Package -> PackageDev

2. 新建一个纯文本文件, 然后打开点击菜单  Tools->Developer->New Syntax from Plain text.tmLanguage...   

 

注意一定要打开一个没有语法的文本才会出现这个菜单.

 

3. 修改 name 和 file_extensions, 然后保存到 Packages/User/name.sublime-syntax. 打开控制台, 注意观察如下这类错误提示, 并对应修改

 

4. 当语法正确后就可以在 View->Syntax 列表中找到所定义的名字的项了.

 

语法定义文件的格式可参考: 

1. http://www.sublimetext.com/docs/3/syntax.html

2. https://github.com/adintr/sublime_msil_syntax

3. http://docs.sublimetext.info/en/latest/extensibility/syntaxdefs.html

4. 在 Sublime Text 安装目录的 Packages 子目录下拷贝任意一个文件, 比如 SQL.sublime-package 出来, 改名为 SQL.zip, 解压, 找到里面的 SQL.sublime-syntax 打开进行参考.

 

这里给出一些简要说明:

match: 一个用于对文本区域进行匹配的正则表达式, 支持的语法参考 https://raw.githubusercontent.com/kkos/oniguruma/5.9.6/doc/RE

scope: 指定匹配区域的名称, 配色方案根据此名称来设置颜色, 参考 http://www.sublimetext.com/docs/3/scope_naming.html, 建议只使用 MINIMAL SCOPE COVERAGE 中列出的名称.

captures: 为正则表达式中的分组指定 scope name.

 

meta_scope: 设置当前区域的名称, 注意不是 match 匹配的区域.

meta_content_scope: 同上, 但是不包括开始和结束符号

meta_include_prototype: 

push: 开始一个区域

pop: 结束当前区域

set:  等价于 pop 再 push

include: 嵌入指定的模板到当前位置

 

 

 

▲评论

X 正在回复:
姓 名: 留下更多信息
性 别:
邮 件:
主 页:
Q Q:
来 自:
职 业:
评 论:
验 证:


Valid HTML 4.01 Strict Valid CSS!
Copyleft.A!die Software Studio.ADSS
Power by webmaster@adintr.com