Sublime Text 的语法高亮由 YAML 格式的 .sublime-syntax 文件控制,需定义 name、file_extensions、scope 和 contexts 等字段,通过 Packages/User/ 目录加载,配合 scope 名称与配色方案实现高亮。

Sublime Text 的语法高亮由 sublime-syntax 文件控制,这是 YAML 格式的定义文件,取代了旧版的 tmLanguage(plist)。要修改或创建自定义语法,核心是编写或编辑 `.sublime-syntax` 文件,并正确加载到 Sublime 中。
创建新语法:从头写一个 .sublime-syntax
新建一个纯文本文件,后缀为 .sublime-syntax,例如 MyLang.sublime-syntax。内容结构必须包含以下关键字段:
- name:语法显示名称(如 "My Language")
-
file_extensions:关联的文件扩展名(如
- myl) -
scope:根作用域(如
source.myl),影响配色方案匹配 - contexts:核心规则区,用正则匹配并分配 scope
示例片段(匹配以 # 开头的单行注释):
contexts:
main:
- match: '#.*$'
scope: comment.line.number-sign.myl
保存后,通过 Tools → Developer → New Syntax… 可快速生成模板;或手动放至 Packages/User/ 目录下,重启 Sublime 或执行 Preferences → Browse Packages… 后刷新即可生效。
修改现有语法:安全覆盖或继承
不建议直接改官方语法文件(升级会丢失)。推荐两种方式:
-
覆盖法:在
Packages/User/下新建同名文件(如Python.sublime-syntax),Sublime 会优先加载它 -
继承法:用
extends关键字复用原语法,只重写需要的部分(适合微调)
例如继承 Python 语法并增强字符串内插高亮:
extends: 'Packages/Python/Python.sublime-syntax'
contexts:
string_quoted_single:
- match: '\$\{[^}]+\}'
scope: variable.interpolation.myl
调试与验证语法是否生效
写完语法后常遇到“没反应”问题,按顺序检查:
- 文件是否放在
Packages/User/(而非Packages/根目录) - 是否有 YAML 语法错误(缩进、冒号、引号缺失)——Sublime 控制台(
Ctrl+`)会报错 - 是否已通过 View → Syntax → Open all with current extension as… 手动绑定扩展名
- 用 Tools → Developer → Show Scope Name(快捷键
Ctrl+Shift+P输入 “Scope”)查看光标处实际 scope,确认是否匹配你定义的 scope
配合配色方案(Color Scheme)让高亮真正显示出来
语法只负责打上 scope 标签,最终颜色由当前主题(.sublime-color-scheme)决定。若新加的 scope 没颜色,需在主题里添加规则,例如:
{
"scope": "comment.line.number-sign.myl",
"foreground": "hsl(120, 30%, 60%)"
}
主题文件同样放在 Packages/User/ 下,重启或重载即可。可先复用已有 scope(如 comment.line)快速验证语法逻辑是否正确。
基本上就这些。语法定义不复杂但容易忽略缩进和 scope 命名规范,边写边用 Scope Name 工具看效果,效率最高。










