入门 Zed Industries 2026-09-14 17:42:19 · 0 阅读

第55章 Zed 编辑器 Ansible 支持详解

Zed 中的 Ansible 支持由一个社区维护的 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"
          }
        }
      }
    }
  }
}

所有可传给服务器的选项/设置完整列表可在项目的此处找到。

评论 (0)