入门 Zed Industries 2026-09-14 17:42:19 · 0 阅读
第55章 Zed 编辑器 Ansible 支持详解
Zed 中的 Ansible 支持由一个社区维护的 Ansible 扩展提供。
- Tree-sitter:zed-industries/tree-sitter-yaml
- Language Server:ansible/vscode-ansible
配置
文件检测
为避免错误处理非 Ansible 的 YAML 文件,Ansible 语言默认不关联任何文件扩展名。
要更改此行为,你可以在项目的 Zed 设置(.zed/settings.json)或 Zed 用户设置(~/.config/zed/settings.json)中添加 "file_types" 部分,以匹配你的文件夹/命名约定。示例如下:
{
"file_types": {
"Ansible": [
"**.ansible.yml",
"**.ansible.yaml",
"**/defaults/*.yml",
"**/defaults/*.yaml",
"**/meta/*.yml",
"**/meta/*.yaml",
"**/tasks/*.yml",
"**/tasks/*.yaml",
"**/handlers/*.yml",
"**/handlers/*.yaml",
"**/group_vars/*.yml",
"**/group_vars/*.yaml",
"**/host_vars/*.yml",
"**/host_vars/*.yaml",
"**/playbooks/*.yml",
"**/playbooks/*.yaml",
"**playbook*.yml",
"**playbook*.yaml"
]
}
}
请根据需求修改此列表。
Inventory
如果你的 inventory 文件采用 YAML 格式,你可以:
- 在 inventory 文件顶部添加如下注释,将其与
ansible-lint的 inventory JSON schema 关联:
# yaml-language-server: $schema=https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/inventory.json
- 或者,在 Zed 设置中配置 YAML 语言服务器设置,为所有符合 inventory 模式的 inventory 文件设定此 schema(参考):
{
"lsp": {
"yaml-language-server": {
"settings": {
"yaml": {
"schemas": {
"https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/inventory.json": [
"./inventory/*.yaml",
"hosts.yml"
]
}
}
}
}
}
}
LSP 配置
默认情况下,以下配置会传给 Ansible language server。它与 nvim-lspconfig 中为 Ansible language server 设置的默认值保持一致:
{
"ansible": {
"ansible": {
"path": "ansible"
},
"executionEnvironment": {
"enabled": false
},
"python": {
"interpreterPath": "python3"
},
"validation": {
"enabled": true,
"lint": {
"enabled": true,
"path": "ansible-lint"
}
}
}
}
注意:要使 lint 功能正常工作,请确保已安装
ansible-lint,并且它位于$PATH中。
如有需要,你可以在 Zed 设置文件的 "lsp" 部分覆盖上述任意默认配置。例如:
{
"lsp": {
// Zed 的 Ansible 扩展会为所有设置加上 `ansible` 前缀,
// 因此应使用 `ansible.path` 而不是 `ansible.ansible.path`。
"ansible-language-server": {
"settings": {
"ansible": {
"path": "ansible"
},
"executionEnvironment": {
"enabled": false
},
"python": {
"interpreterPath": "python3"
},
"validation": {
"enabled": false,
"lint": {
"enabled": false,
"path": "ansible-lint"
}
}
}
}
}
}
所有可传给服务器的选项/设置完整列表可在项目的此处找到。