YAML

Zed 原生支持 YAML。

配置

您可以通过将各种 yaml-language-server 设置 添加到 Zed 的 settings.json 中的 lsp 键下的 yaml-language-server 块来配置它们。例如

  "lsp": {
    "yaml-language-server": {
      "settings": {
        "yaml": {
          "keyOrdering": true,
          "format": {
            "singleQuote": true
          },
          "schemas": {
              "http://json.schemastore.org/composer": ["/*"],
              "../relative/path/schema.json": ["/config*.yaml"]
          }
        }
      }
    }
  }

请注意,设置键必须嵌套,因此 yaml.keyOrdering 变为 {"yaml": { "keyOrdering": true }}

格式化

默认情况下,Zed 将使用 prettier 格式化 YAML 文件。

Prettier 格式化

您可以自定义 Prettier 的格式化行为。例如,要在 yaml 文件中使用单引号,请将以下内容添加到 .prettierrc

{
  "overrides": [
    {
      "files": ["*.yaml", "*.yml"],
      "options": {
        "singleQuote": false
      }
    }
  ]
}

yaml-language-server 格式化

要使用 yaml-language-server 而不是 Prettier 进行 YAML 格式化,请将以下内容添加到 Zed 的 settings.json

  "languages": {
    "YAML": {
      "formatter": "language_server"
    }
  }

模式

默认情况下,yaml-language-server 将尝试确定给定 yaml 文件的正确模式,并从 Json Schema Store 检索相应的 JSON 模式。

您可以通过 schemas 设置键(如上所示)或通过在 yaml 文件顶部的 modeline 注释中提供 内联模式 引用来覆盖任何自动检测到的模式

# yaml-language-server: $schema=https://json.schemastore.org/github-action.json
name: Issue Assignment
on:
  issues:
    types: [oppened]

如果需要,您可以禁用从 JSON Schema 自动检测和检索模式

  "lsp": {
    "yaml-language-server": {
      "settings": {
        "yaml": {
          "schemaStore": {
            "enable": false
          }
        }
      }
    }
  }

自定义标签

Yaml-language-server 支持 自定义标签,可用于将自定义应用程序功能在运行时注入到 yaml 文件中。

例如,Amazon CloudFormation YAML 使用了许多自定义标签,为了支持这些标签,您可以将以下内容添加到 settings.json

  "lsp": {
    "yaml-language-server": {
      "settings": {
        "yaml": {
          "customTags": [
            "!And scalar",
            "!And mapping",
            "!And sequence",
            "!If scalar",
            "!If mapping",
            "!If sequence",
            "!Not scalar",
            "!Not mapping",
            "!Not sequence",
            "!Equals scalar",
            "!Equals mapping",
            "!Equals sequence",
            "!Or scalar",
            "!Or mapping",
            "!Or sequence",
            "!FindInMap scalar",
            "!FindInMap mapping",
            "!FindInMap sequence",
            "!Base64 scalar",
            "!Base64 mapping",
            "!Base64 sequence",
            "!Cidr scalar",
            "!Cidr mapping",
            "!Cidr sequence",
            "!Ref scalar",
            "!Ref mapping",
            "!Ref sequence",
            "!Sub scalar",
            "!Sub mapping",
            "!Sub sequence",
            "!GetAtt scalar",
            "!GetAtt mapping",
            "!GetAtt sequence",
            "!GetAZs scalar",
            "!GetAZs mapping",
            "!GetAZs sequence",
            "!ImportValue scalar",
            "!ImportValue mapping",
            "!ImportValue sequence",
            "!Select scalar",
            "!Select mapping",
            "!Select sequence",
            "!Split scalar",
            "!Split mapping",
            "!Split sequence",
            "!Join scalar",
            "!Join mapping",
            "!Join sequence",
            "!Condition scalar",
            "!Condition mapping",
            "!Condition sequence"
          ]
        }
      }
    }
  }