创建可用的.sublime-syntax文件需用Tools→Developer→New Syntax…生成模板,保存至Packages/User/MyLang/MyLang.sublime-syntax,scope设为source.mylang,file_extensions写成列表格式如["myl"],每条match规则必须指定scope,且YAML缩进、引号、空格须严格合规。

直接改 .sublime-syntax 文件,别指望“一键设置”或插件自动识别——Sublime 的语法高亮必须手动定义规则、绑定扩展名、验证 scope,三步缺一不可。
怎么写一个能用的 .sublime-syntax 文件
Sublime 不会猜你语言的结构,所有高亮都靠正则匹配 + scope 标记。模板从 Tools → Developer → New Syntax… 生成,但关键字段不能照搬:
-
name:显示在状态栏和菜单里,建议带公司缩写,比如MyCorpScript -
file_extensions:写成列表格式,如["mcs", "mcl"],不要漏掉点号,也不要写通配符 -
scope:必须唯一且规范,推荐source.mycorp,后续配色方案里靠它做基础匹配 -
contexts下的main是入口,每条match规则要加scope,比如:match: '\b(LOAD|STORE|CALL)\b' scope: keyword.control.mycorpmatch: '"[^"]*"' scope: string.quoted.double.mycorp - 正则尽量用
\b匹配词边界,避免把CALLER里的CALL也标红
为什么文件打开还是 Plain Text
不是语法文件没加载,而是 Sublime 没把它和扩展名关联上。常见断点:
- 右下角点开语法菜单,找不到你的
MyCorpScript?说明文件没放在Packages/User/目录下(不是Packages/根目录) - 找到了但不自动应用?检查
.sublime-syntax里file_extensions是否拼错,比如写成mcs却打开的是.MCS(Windows 默认不区分大小写,但 Sublime 区分) - 手动选一次后仍不记住?用
View → Syntax → Open all with current extension as…,而不是只点右下角菜单里的名称 - 重启 Sublime 后失效?确认 YAML 格式无误:缩进必须用空格,
-后要空一格,末尾不能有多余逗号
如何让关键字变色生效
语法文件只负责打标签,颜色由 .sublime-color-scheme 控制。光标停在 LOAD 上,按 Ctrl+Shift+P → Developer: Show Scope Name,看状态栏显示的完整 scope(比如 keyword.control.mycorp):
- 去当前启用的配色方案文件(路径在
Show Scope Name结果里)的"rules"数组里找对应"scope": "keyword.control.mycorp"的项 - 没有就新增一条,格式严格:
{"scope": "keyword.control.mycorp", "foreground": "#d75f5f"} - 别只写
"keyword"—— 它会匹配所有语言的关键字,覆盖你想要的精确效果 - 改完保存,再从
Preferences → Color Scheme重新选一遍主题才能刷新
容易被忽略的调试细节
scope 链是层级叠加的,source.mycorp keyword.control.mycorp 表示同时满足两个条件。这意味着:
- 如果某行既匹配注释又匹配关键字,最终 scope 是两者叠加,比如
comment.line.hash.mycorp keyword.control.mycorp—— 此时你要匹配的是更长的 scope,或者靠meta_scope控制优先级 -
match规则顺序很重要:先写的先匹配,后面同 scope 的会被跳过 - 测试时别只看单个词,打开真实脚本文件,检查变量名、数字、特殊符号(如
@开头的标识符)是否也被意外捕获 - 配色方案里
"foreground"值必须是合法十六进制(如#ff6b6b),不支持rgb()或命名色

















