sublime text 默认不支持 cil 语法高亮,需手动安装或定义 cil.sublime-syntax 文件并绑定 .cil/.il 后缀,同时启用 match_brackets 和 highlight_line 设置以实现括号匹配与当前行高亮。

Sublime Text 默认不支持 CIL(Common Intermediate Language)语法高亮,没有内置 CIL 语法定义,.cil 或 .il 文件打开后显示为 Plain Text,括号不匹配、关键字无色、Ctrl+Enter 发送到 REPL 也完全失效——这不是插件没装对,是根本没绑定语法作用域。
怎么让 .cil / .il 文件自动识别为 CIL 语法
Sublime 只靠文件后缀判断语法,不解析内容。哪怕你写满 .method public static void Main() cil managed,后缀不是它认的,就当纯文本处理。
- 临时方案:点击右下角语言名 → 搜索并选
CIL(注意不是IL、Assembly或Plain Text;若列表里没有,说明尚未安装语法包) - 永久绑定:按
Ctrl+Shift+P→ 输入Set Syntax: CIL→ 回车 → 再输入Open all with current extension as…→ 选CIL;对.cil和.il都要单独执行一遍 - 更彻底:进
Packages/User/新建CIL.sublime-syntax,在file_extensions列表里加两行:- cil、- il(注意 YAML 格式缩进和短横线)
CIL 语法高亮从哪来:必须手动安装或定义
官方仓库和 Package Control 默认不提供 CIL 语法包。目前可靠来源只有两个:
- GitHub 手动安装:搜索
sublime-cil-syntax(如zegervdv/sublime-cil-syntax),下载CIL.sublime-syntax文件,放入Packages/User/目录即可生效 - 自定义简易语法:若只需基础高亮(如
.method、.class、ldstr、call等指令),可用正则快速定义 scope,重点匹配以.开头的指令和常见操作码(opcode) - 别误装
ILSpy或.NET Decompiler类插件——它们不提供语法高亮,只负责反编译输出
括号匹配与当前行高亮必须单独开
match_brackets 和 highlight_line 不随语法自动启用,CIL 文件即使绑对了语法,这两项仍默认关闭。
- 确保用户设置(
Preferences → Settings右侧)含:"match_brackets": true(拼写必须是复数brackets,漏s或用短横线都会失效) - 加
"highlight_line": true启用当前行背景;颜色由配色方案中lineHighlight规则决定,若主题没定义该规则,需手动编辑.sublime-color-scheme文件,在rules里加:{"scope": "region.line", "background": "hsla(210, 5%, 80%, 0.15)"} - 检查右下角是否稳定显示
CIL—— 若偶尔变回Plain Text,说明语法文件有 YAML 解析错误(比如缩进错、冒号后少空格),Sublime 会静默降级
容易被忽略的细节:CIL 文件常混用其他语法结构
CIL 源文件可能嵌入 C# 片段(如 .custom attr 后跟属性声明)、XML 注释或内联汇编风格注释(// 或 ;),这些会导致语法高亮断点或 scope 冲突。
- 避免在
CIL.sublime-syntax中过度扩展embed规则——CIL 不是多语言混合格式,强行嵌套csharp语法会导致解析卡顿或高亮错位 - 注释高亮建议只匹配
;行首注释(CIL 标准)和//(部分工具生成),不要试图兼容 XML<!-- -->—— 这属于文档而非代码 - 如果打开大段 CIL(如从
ildasm导出的完整模块),建议关掉"draw_white_space": "all",否则空格/制表符渲染会拖慢滚动响应











