在YAML块标量中为50多种内置语言添加高亮显示,并能够使用yaml-embedded-languages.include配置设置为任何其他语言添加高亮显示。
YAML 是一种数据序列化格式,支持 块标量(如 | 或 > 开头的多行字符串),常用于嵌入代码、配置或其他文本内容。例如:
script: | |
开发者用户在多语言环境中使用 YAML(如 CI/CD 配置、文档生成)。现有工具缺乏灵活的高亮支持,导致可读性差。
开发者用户希望在 YAML 中嵌入的代码(如 Bash、Python、JSON 等)能像在原生编辑器中一样 高亮显示,提升可读性。
- 用户体验提升:开发者能直观区分不同语言块。
实现 YAML 块标量的语法高亮需要解决:
- 语言识别:如何判断块标量中的内容属于哪种语言?
- 高亮引擎:如何动态应用对应语言的语法规则?
- 性能:高亮不应显著拖慢编辑器/解析器的速度。
技术实现细节
- 语法分析器:YAML 解析器需与语法高亮引擎(如 Tree-sitter、TextMate grammars)协作。
- 高亮流程:
- 解析 YAML 结构,识别块标量。
- 根据配置或启发式规则确定嵌入语言类型。
- 调用对应语言的语法规则生成高亮标记。
- 性能优化:可能采用懒加载(仅当展开块标量时解析)或缓存机制。
典型应用场景
- DevOps 工具:如 GitHub Actions、Ansible 的 YAML 文件中嵌入脚本。
- 文档生成:在 Markdown/YAML 中混合代码示例。
- 配置即代码:如 Kubernetes Helm Charts 的模板逻辑。
内置语言支持
若要突出显示单个块,请在块标识符旁边放置带有语言标识符的注释。
example: | <language-identifier> |
要突出显示从某个点开始的所有块,请放置一个注释,注释中的扩展名后跟语言标识符。
yaml-embedded-languages: <language-identifier> |
若要停止高亮显示块,请添加带有扩展名的注释。
yaml-embedded-languages |