YAML
Zed 原生支持 YAML。
- Tree-sitter: zed-industries/tree-sitter-yaml
- 语言服务器: redhat-developer/yaml-language-server
配置
您可以通过将各种 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"
}
}
模式(Schemas)
默认情况下,yaml-language-server 会尝试确定给定 yaml 文件的正确模式,并从 Json Schema Store 中检索相应的 JSON Schema。
您可以通过 schemas 设置键(如上所示)覆盖任何自动检测到的模式,或者通过在 yaml 文件顶部提供一个模型行注释,提供一个 内联模式 引用:
# yaml-language-server: $schema=https://json.schemastore.org/github-action.json
name: Issue Assignment
on:
issues:
types: [opened]
如果需要,您可以禁用从 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"
]
}
}
}
}