Zed 扩展完整指南:从安装第一个扩展到开发并发布自己的扩展
2026/9/13 18:18:03 网站建设 项目流程

Zed 扩展完整指南:从安装第一个扩展到开发并发布自己的扩展

【免费下载链接】zedCode at the speed of thought – Zed is a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.项目地址: https://gitcode.com/GitHub_Trending/ze/zed

Zed 是由 Atom 与 Tree-sitter 团队打造的高性能代码编辑器,它的扩展系统(Zed 扩展)可以为编辑器添加语言支持、主题、图标、代码片段、调试器与 MCP 服务器等能力。本指南带你走完 Zed 扩展安装、开发、调试到发布的全流程,零基础也能跑通。

为什么需要 Zed 扩展

默认安装的 Zed 已经内置了一部分常用语言(源码位于 crates/languages/src),但除此之外的大多数语言、配色方案和工具链,都依赖扩展来提供。

你可以把它理解成 Zed 的"能力插座":

  • 想让 Zed 识别一门新语言?装一个语言扩展;
  • 想换一套配色或文件图标?装一个主题扩展;
  • 想给 Agent 面板加自定义工具?用 MCP Server 扩展;
  • 想调试某门语言?装一个调试器扩展。

而官方团队自己维护的一批扩展就放在仓库的 extensions/ 目录下,比如 HTML、GLSL、Protocol Buffers 的语言支持,以及一个用于测试的示例扩展。

30 秒认识扩展类型

在动手之前,先知道一个扩展"能干什么"。一个 Zed 扩展本质上是一个包含extension.toml清单文件的 Git 仓库,它可以提供以下一种或多种能力:

扩展类型它帮你解决什么官方文档
语言支持Tree-sitter 语法高亮、LSP 补全、格式化languages.md
主题自定义 UI 与语法高亮配色themes.md
图标主题文件与目录图标样式extensions/
代码片段为语言预置常用代码模板extensions.md
调试器接入 DAP 调试协议extensions.md
MCP 服务器给 Agent 面板增加自定义工具与上下文extensions.md

小提示:早期版本中扩展还可以提供 Slash 命令,该能力已从 Zed 移除。现在要为 Agent 面板扩展工具,推荐使用 MCP Server 扩展。

三种安装路径,选一种就行

装扩展不复杂,按你的场景三选一即可:

场景入口适用人群
扩展商店快捷键Cmd+Shift+X(macOS)或Ctrl+Shift+X(Linux/Windows),或菜单栏 Zed → Extensions日常用户,装现成扩展
开发中扩展命令面板执行zed: Install Dev Extension,指向你的扩展目录正在写扩展、想边改边测
离线文件命令面板执行zed: Install Extension from File,选择.zedext文件无法联网或手动分发的环境

商店安装

打开扩展画廊,输入扩展名,点"安装"就完事了。扩展会被解压到本地的扩展目录:

系统扩展安装目录
macOS~/Library/Application Support/Zed/extensions
Linux$XDG_DATA_HOME/zed/extensions~/.local/share/zed/extensions
Windows%LOCALAPPDATA%\Zed\extensions

该目录下有两个子目录:installed存放每个扩展的源码,work存放扩展运行中产生的文件(比如下载下来的语言服务器)。

本地开发扩展

在扩展页面点击Install Dev Extension(或触发zed::InstallDevExtension动作),选中你的扩展目录即可。装好后,扩展页面会显示"Overridden by dev extension",表示当前生效的是你的开发版本;如果之前装过同名发布版,它会先被卸载。

离线文件安装

把下载好的.zedext包交给zed: Install Extension from File,等价于手工完成了一次安装。

从零开发你的第一个 Zed 扩展 🛠

准备开发环境

你只需要两样东西:

  1. Rust——强烈建议通过 rustup 安装。Zed 用wasm32-wasip2目标编译扩展,若 Rust 来自 rustup,Zed 会自动帮你装好这个 target;用 Homebrew、Nix 等其他途径装的 Rust,需要你自己保证该 target 可用。
  2. Git——扩展就是 Git 仓库。

另外记住一个省心事:大多数扩展一行 Rust 都不用写。只有语言服务器、上下文服务器和调试器扩展才需要自定义 Rust 代码;纯主题、图标、片段类扩展基本靠配置文件就能完成。

目录结构长这样

my-extension/ extension.toml # 必选:扩展元数据清单 Cargo.toml # 需要自定义代码时才需要 src/ lib.rs # 需要自定义代码时才需要 languages/ # 可选:语言支持 my-language/ config.toml highlights.scm themes/ # 可选:主题 my-theme.json

对照官方示例,推荐直接翻 extensions/test-extension 和 extensions/html,它们的结构非常标准。

最小配置

extension.toml是唯一的必选文件,写好这几项即可:

id = "my-extension" name = "My extension" version = "0.0.1" schema_version = 1 authors = ["Your Name <you@example.com>"] description = "Example extension" repository = "https://gitcode.com/your-name/my-zed-extension"

如果扩展带自定义代码,再加一个Cargo.toml,依赖固定用zed_extension_api

[package] name = "my-extension" version = "0.0.1" edition = "2021" [lib] crate-type = ["cdylib"] [dependencies] zed_extension_api = "0.1.0"

唯一的 Rust 样板代码

src/lib.rs的固定套路是:定义结构体、实现Extensiontrait、用宏注册:

use zed_extension_api as zed; struct MyExtension { // ... 扩展状态 } impl zed::Extension for MyExtension { // ... } zed::register_extension!(MyExtension);

注意:扩展最终会被编译成 WebAssembly,所以部分 Rust 特性表现不同——cfg指令不生效,std::env::var也拿不到预期结果。请改用zed_extension_api::current_platform获取运行环境,用Worktree结构体的方法读取环境变量、查找用户PATH中的二进制。

本地验证与调试

  • zed: Install Dev Extension把目录装进 Zed,改完配置保存即生效;
  • 代码里的println!/dbg!输出会直接转发到 Zed 进程,在终端执行zed --foreground启动,就能看到 INFO 级别的详细日志;
  • 也可以随时打开 Zed.log 查看常规输出。

进阶:理解它背后的机制

扩展的"过程性代码"(Rust 部分)编译为 WebAssembly 运行,这就是前面说cfg与环境变量行为不同的原因。

如果你做的是带语法(grammar)的语言扩展,还需要 wasi-sdk 来编译 Tree-sitter 解析器——Zed 会自动下载它;若你本机已有 wasi-sdk,可以设置环境变量WASI_SDK_PATH指向其根目录(即包含bin/clang的那一层)。

想给语言扩展加 LSP 补全或 Tree-sitter 查询规则,细节都在 docs/src/extensions/languages.md 里,仓库里的 extensions/html 就是一个"语法 + 语言服务器"俱全的活样本。

发布你的 Zed 扩展

发布前自查

  • 仓库附带受支持的许可证:Apache 2.0、BSD 3-Clause、GPLv3、MIT之一;
  • extension.toml元数据完整(id、name、version、authors、description 等);
  • 扩展功能已在本机用开发扩展方式验证通过;
  • 遵守语义化版本控制(SemVer)。

提交流程

  1. Fork 并克隆官方扩展仓库:
git clone https://gitcode.com/GitHub_Trending/ze/zed cd zed/extensions
  1. 把你的扩展以子模块形式加入extensions/目录:
git submodule add https://gitcode.com/your-username/your-extension.git extensions/your-extension
  1. 在顶层extensions.toml中登记你的扩展,version必须与子模块对应 commit 里extension.toml的一致:
[your-extension] submodule = "extensions/your-extension" version = "0.0.1"
  1. 提交更改并创建 Pull Request,等待合并。

评审规则(别踩雷)

  • 每个 PR 只能新增或更新恰好一个扩展;
  • 同一时间最多保持3 个开放 PR;
  • 需在3 周内响应维护者的反馈,否则 PR 会被关闭。

完整流程与常见问题见 发布指南。

速查清单与常见问题

上手清单

  • Cmd+Shift+X/Ctrl+Shift+X打开扩展画廊装一个扩展
  • rustup 安装 Rust,确认wasm32-wasip2target 可用
  • 建目录:extension.toml+ 可选的languages/themes/src/lib.rs
  • zed: Install Dev Extension加载本地目录,看到 "Overridden by dev extension"
  • zed --foreground观察println!输出排查问题
  • 确认许可证与元数据,走子模块 +extensions.toml+ PR 发布

遇到问题先查这里

现象先做什么
扩展加载失败zed --foreground启动看 INFO 日志,核对zed_extension_api版本与 Zed 版本的兼容性
语法扩展编译报错检查 wasi-sdk 是否就绪,必要时设置WASI_SDK_PATH指向已有安装
行为异常、拿不到环境变量别用std::env::var,改用Worktreecurrent_platform
性能卡控制扩展体积,避免在主流程做耗时操作

继续深入

  • 扩展总览:docs/src/extensions.md
  • 安装详情:docs/src/extensions/installing-extensions.md
  • 开发详情:docs/src/extensions/developing-extensions.md
  • 发布入口:docs/src/extensions/publishing/publishing-guide.md
  • 官方扩展示例:extensions/

装好一个扩展是 5 分钟的事,写出并发布一个自己的扩展也不过是一个下午。挑一门你常用的语言或一套心仪的配色,从extension.toml写起吧。

【免费下载链接】zedCode at the speed of thought – Zed is a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.项目地址: https://gitcode.com/GitHub_Trending/ze/zed

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询