今天小编分享的科技经验:再战微软 VS Code,2 年前落败的 Atom 创始人带着全新 IDE 回归,主打一个高性能,欢迎阅读。
Zed 来了
还记得 2022 年,GitHub 官网发布一则有关 Atom 退役的消息:Atom 下所有项目于 2022 年 12 月 15 日归档。当时,许多人感到惋惜,毕竟 Atom 是一款专为程式员而设计、历经 11 年发展的跨平台文本编辑器,然而微软在 2018 年收购 GitHub 后,Atom 因为性能、生态系统问题,落败于后起之秀 VS Code 之手,逐渐被 GitHub 淘汰。
时光流转,两年后的现在,Atom 创始人 Nathan Sobo 在秉持着 " 世界各地的开发人员都需要更好的代码编辑器 " 的愿景下,带着一款名为 Zed 的全新代码编辑器回归,主打一个高性能,还内置了对 OpenAI 和 GitHub Copilot 的支持,同时它还是开源的。
Zed 一经开源(https://github.com/zed-industries/zed),便吸引了不少开发者的关注。
基于 Rust 开发,Zed 性能优于基于 Electron 框架的 VS Code
要知道,Nathan Sobo 曾经不仅开发了 Atom 编辑器,还创建了用于构建跨平台桌面应用程式的 Electron 框架。
值得关注的是,VS Code 这款轻量级的 IDE 是基于 Electron 框架开发的。不过这一次,Nathan Sobo 没有选择去追随 VS Code 的脚步去采用 Electron,而是使用了 Rust 构建并编译为本机代码。
对此,Nathan Sobo 在官方解释道,"Rust 独特的类型系统可让我们在不影响应用程式稳定性的情况下,在多个内核上并行工作。Zed 使用写入时复制数据结构和 Rust 富有表现力的 async 原语,将 CPU 密集型任务从主线程中转移出来,从而获得单线程编辑器无法实现的响应速度。"
同时,相比 VS Code 有超过 55000 个扩展,Zed 也没有那么多的插件。Zed 的到来可以有效解决开发人员对 VS Code 性能的不满。
支持最新的 GitHub Copilot、OpenAI
除此之外,在 AI 时代下,为了增强程式员的编码体验,Zed 跟随前沿 IDE 发展趋势,整合了先进的 AI 工具。
在这一点上,Zed 开箱即支持 GitHub Copilot,只要按下 Ctrl+Enter 键,然后输入自然语言 Prompt,就可使用 GPT-4 生成或重构代码。
Zed 团队成员 Mikayla Maki 透露,截至目前,GitHub 官方还没有提供与 Copilot 互動的 API。不过,得益于开源的 Neovim 插件,我们可以访问一个无文档、经过精简的 LSP 伺服器,它能帮 Zed 团队处理与 GitHub 的互動。
时下,Zed 已经内置了对 LSP 伺服器的支持,因此访问 Copilot 就像从 Neovim 插件库下载 Copilot LSP 一样简单。
在对 Copilot 的行为进行微调过程中,Mikayla Maki 分享道," 平衡其视觉和心理负担至关重要,因为过于活跃的 Copilot 可能会适得其反,并与 LSP 自动完成等已有功能产生冲突。我们为每种语言引入了禁用 Copilot 的設定,在插入‘建议文本’之前增加了 75 毫秒的延迟,并在出现冲突时优先使用语言的真正 LSP(语言伺服器協定),而不是 Copilot。"
其次,Zed 还支持 OpenAI 的模型。开发人员可以选择模型类型并随时更改,甚至在 AI 对话过程中也可以这样操作。
当然想要使用这一功能,也有一定的前提。开发者需要有一个 OpenAI 账户,并在 Zed 中配置一个 API 密钥。这些密钥按使用的 token 数量计费,Zed 会随时显示所选模型的剩余 token 数量。与 OpenAI 大型语言模型的互動是通过 Cmd+Enter 快捷键,而不是按一个回车键,对此,Zed 团队的解释是,这样做的目的是让它 " 感觉尽可能像普通编辑器 "。
和其他 IDE 有所不同的是,Zed 还有一个内联助手功能,可以查看周围代码的上下文。Zed 团队的另一位成员 Marshall Bowers 为此还发表了一篇关于使用 Zed 中 AI 功能的体验文章(https://zed.dev/blog/ai-continues-to-impress),并表示," 虽然我仍然不相信 AI 会让軟體开发人员过时,但这些经验让我相信,AI 绝对有明智地集成到我们的开发工具和工作流程中的空间。"
为什么开源?
其实在 Nathan Sobo 从 GitHub 离职的一年后,他便全职投入到 Zed 这款 IDE 的构建中。
不久之前,Nathan Sobo 发博文表示,Zed 虽然是预览版本,但是他们决定将 Zed 开源出来(https://github.com/zed-industries/zed),其中编辑器使用 GPL 许可、伺服器端组件使用 AGPL(GNU Affero 通用公共许可证)、GPUI(GPU 加速 UI)使用 Apache 2 许可。
至于为什么会选择开源这条路,Nathan Sobo 表示," 我们相信将 Zed 开源将使其成为最好的产品。我们的使命是打造世界上最先进的代码编辑器,并将其交到数百万开发人员手中。这个问题涉及面很广,我们需要所有能得到的帮助。考虑到 Zed 的所有用户都是程式员,因此向最大的人才库开放 Zed 是最有意义的。"
而对于开源与商业化生存这个老生常谈且非常现实的问题,Zed 团队也将其摆到台面上,直面回应道,「开放性与商业成功并不冲突。与其向你出售一个专有的编辑器,我们更愿意向你出售能与你的编辑器无缝集成的服务,从而提高你和你的团队的工作效率。」
基于此,该团队推出了一个名为 "Zed Channels" 的简洁小功能。通过 Zed Channels,你可以共享链接并实时一起编写代码。
不过由于 Zed 目前还处于预览版本阶段时,这一功能对任何人都是免费的。未来当在测试期结束后,Zed 团队计划开始对私人使用收费,同时也会提供伺服器端计算以支持人工智能功能的付费服务。
除此之外,Zed 也做了保证," 我们正在对迄今为止编写的代码进行 100% 的开源。不过,在未来,我们可能仍会针对商业和企业用例提供专有产品,但我们始终希望专有代码只占我们开源代码的一小部分。我们还打算确保我们的创收需求绝不会影响你编写軟體的需求。我们绝不会在你的代码编辑器中显示横幅广告,如果我们这样做了,你可以随时从源代码中创建 Zed。"
总结
最后,和 VS Code 这棵参天大树相比,Zed 实则才刚刚起步,也存在许多的不足:
正如上文所述,VS Code 有超过 55000 个扩展,而 Zed 只有一个插件模型的雏形,没有扩展生态系统。
Zed 语言支持很有限,虽然 Rust、TypeScript 和 Python 得到了很好的支持,但有些语言(例如微软的 C#)还没有支持。
当前的 Zed 仅支持 Mac,还不支持其他平台。
不过,Zed 的落地也为开发者提供了更多的选择,很多人喜闻乐见:
我对我的工具非常挑剔,尤其是延迟,我时不时地会试试 Zed,它很不错。干净、简约的设计美学、紧凑的代码,它是个不错的作品,我非常喜欢。
但是,如果使用正确的标记和经过调整的 GC,emacs 29 也同样迅捷,而且比 VSCode 拥有更多令人惊叹的軟體包。
对于那些想要比 VSCode 更快速但比 emacs 更省力的人来说,这是一个市场,我祝他们好运:我认为它是那里的领跑者。