十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

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

Zed 扩展完整指南:从安装第一个扩展到开发并发布自己的扩展 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/zedZed 是由 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.mdMCP 服务器给 Agent 面板增加自定义工具与上下文extensions.md小提示早期版本中扩展还可以提供 Slash 命令该能力已从 Zed 移除。现在要为 Agent 面板扩展工具推荐使用 MCP Server 扩展。三种安装路径选一种就行装扩展不复杂按你的场景三选一即可场景入口适用人群扩展商店快捷键CmdShiftXmacOS或CtrlShiftXLinux/Windows或菜单栏 Zed → Extensions日常用户装现成扩展开发中扩展命令面板执行zed: Install Dev Extension指向你的扩展目录正在写扩展、想边改边测离线文件命令面板执行zed: Install Extension from File选择.zedext文件无法联网或手动分发的环境商店安装打开扩展画廊输入扩展名点安装就完事了。扩展会被解压到本地的扩展目录系统扩展安装目录macOS~/Library/Application Support/Zed/extensionsLinux$XDG_DATA_HOME/zed/extensions或~/.local/share/zed/extensionsWindows%LOCALAPPDATA%\Zed\extensions该目录下有两个子目录installed存放每个扩展的源码work存放扩展运行中产生的文件比如下载下来的语言服务器。本地开发扩展在扩展页面点击Install Dev Extension或触发zed::InstallDevExtension动作选中你的扩展目录即可。装好后扩展页面会显示Overridden by dev extension表示当前生效的是你的开发版本如果之前装过同名发布版它会先被卸载。离线文件安装把下载好的.zedext包交给zed: Install Extension from File等价于手工完成了一次安装。从零开发你的第一个 Zed 扩展 准备开发环境你只需要两样东西Rust——强烈建议通过 rustup 安装。Zed 用wasm32-wasip2目标编译扩展若 Rust 来自 rustupZed 会自动帮你装好这个 target用 Homebrew、Nix 等其他途径装的 Rust需要你自己保证该 target 可用。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 youexample.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。提交流程Fork 并克隆官方扩展仓库git clone https://gitcode.com/GitHub_Trending/ze/zed cd zed/extensions把你的扩展以子模块形式加入extensions/目录git submodule add https://gitcode.com/your-username/your-extension.git extensions/your-extension在顶层extensions.toml中登记你的扩展version必须与子模块对应 commit 里extension.toml的一致[your-extension] submodule extensions/your-extension version 0.0.1提交更改并创建 Pull Request等待合并。评审规则别踩雷每个 PR 只能新增或更新恰好一个扩展同一时间最多保持3 个开放 PR需在3 周内响应维护者的反馈否则 PR 会被关闭。完整流程与常见问题见 发布指南。速查清单与常见问题上手清单用CmdShiftX/CtrlShiftX打开扩展画廊装一个扩展rustup 安装 Rust确认wasm32-wasip2target 可用建目录extension.toml 可选的languages/、themes/、src/lib.rszed: Install Dev Extension加载本地目录看到 Overridden by dev extensionzed --foreground观察println!输出排查问题确认许可证与元数据走子模块 extensions.toml PR 发布遇到问题先查这里现象先做什么扩展加载失败用zed --foreground启动看 INFO 日志核对zed_extension_api版本与 Zed 版本的兼容性语法扩展编译报错检查 wasi-sdk 是否就绪必要时设置WASI_SDK_PATH指向已有安装行为异常、拿不到环境变量别用std::env::var改用Worktree与current_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),仅供参考
返回列表