向微軟“復仇”!Zed 編輯器要幹掉 VS Code:Rust 少插件,速度賊快

2024年2月6日 26点热度 0人点赞

作者 | 核子可樂、李忠良

Zed 是一款支持多人協作的代碼編輯器,底層采用 Rust,且默認支持 Rust,還自帶了 rust-analyzer,主打“高性能”。1 月 24 日,備受關註的 Zed 項目宣佈正式開源。

Zed 代碼庫將采用 Copyleft 許可證,其中編輯器部分使用 GNU General Public License (GPL),服務器端組件則采用 Affero General Public License (AGPL)。此外,GPUI UI 框架將以 Apache 2 許可證分發,允許開發者構建高性能桌面應用程序,並自由選擇許可證分發其應用。此次開源轉變意味著 Zed 的代碼和相關組件將面向所有開發者開放,賦予社區更大的靈活性和合作空間。

最近在 GitHub 上發表的一篇帖子中,Zed 的編輯器創始人 Nathan Sobo 詳細介紹了 Zed 編輯器的多個關鍵組件以及它們各自的開源許可證。Zed 的編輯器本體采用了 GPL 許可證,體現了對開源精神和自由共享的強調。而其服務器端組件則采用了 AGPL 許可證,為網絡部署的應用程序設置了更嚴格的共享要求。

此外,Zed 團隊還開發了一個 GPU 加速的 UI 框架——GPUI,它遵循 Apache 2 許可證,旨在超越基於 Web 的 Electron 框架的限制,利用 GPU 加速來提供更流暢和響應更快的用戶界面。

談到 Nathan Sobo ,他不僅僅是 Zed 的創始人,還是 Electron 框架和廣受歡迎的 Atom 編輯器的開發者。Electron 是一基於 Chromium 瀏覽器組件和 V8 JavaScript 引擎的框架,現已成為全球領先的輕量級 IDE 和編輯器——Visual Studio Code (VS Code) 的一部分。

然而,Zed 在技術實現上走了一條與 Electron 完全不同的路線。Zed 是用 Rust 語言構建的,直接編譯為本機代碼,這種方法與基於 Web 技術的 Electron 形成了鮮明對比。

有趣的是,Atom 編輯器曾被微軟收購並最終被淘汰以支持 VS Code, Zed 的出現似乎帶有一種“復仇”之意。

Zed 編輯器:Rust 少插件,速度極快

在功能和性能方面,Zed 與市場上的主流產品 VS Code 形成了鮮明對比。盡管 VS Code 以其超過 55,000 個插件選項而著稱,但 Zed 尚在開發其插件模型,還未形成自己的完整生態系統。Zed 項目 FAQ 中提到,在開源之前,他們不會添加插件系統,但一旦開源,將致力於增強其可擴展性。

Zed 的一個顯著優勢是其卓越的性能,這在很大程度上得益於 Rust 的高效特性以及目前較少的插件數量。這種設計策略使 Zed 擁有極快的運行速度,直接針對了 VS Code 用戶群體中最關心的性能痛點。

一位開發人員在 Zed 帖子下評論道,“VS Code 的運行速度向來極其緩慢……而經歷過煩人的基本代碼檢查和 linting 代碼分析之後,我幹脆棄坑了。”

另一位用戶也表示,“各位還沒體驗過 Zed 的朋友,我可以向大傢保證,這是我 25 年開發生涯中用過的唯一一款不會讓人分心的 GUI 編輯器。以往的工具總是用圖標、菜單、色彩等花裡胡哨的元素擾人心神,而現在我的註意力可謂空前集中,這正是 Zed 的優勢所在。”

Zed 的 AI 輔助方法雖然比較粗糙,但反而迎合了那些想要強調自身控制權的開發用戶。Zed 支持 GitHub Copilot 與 OpenAI。

關於 Copilot,Zed 開發團隊成員 Mikayla Maki 表示,“在視覺效果和心智負擔間求取平衡至關重要,過於急切地擴大 Copilot 功能反而會得不償失,甚至與 LSP(語言服務協議)自動補全等原有功能發生沖突。為此我們引入了針對各種語言禁用 Copilot 的設置,還在建議代碼片段前添加了 75 毫秒的防誤操作機制。而一旦出現沖突,Zed 會優先選擇語言的真實 LSP,而非 Copilot 建議。”

Zed OpenAI 助手面板(圖片來自 Zed 說明文檔)

作為獨立功能,Zed 的 OpenAI 助手面板擁有極高的可配置空間。

開發人員可以選擇模型類型並隨時變更,甚至在 AI 會話期間也能靈活切換。當然,大傢需要先擁有一個 OpenAI 賬戶,並在 Zed 中配置 API 密鑰。這些密鑰將按使用的 token 量計費,而 Zed 將始終顯示所選模型的剩餘 token 數量。

與 OpenAI 大語言模型間的交互會通過 CMD-Enter(而不止是輸入)來提交,旨在讓使用感受“盡可能接近傳統編輯器,即按下回車鍵隻會插入換行符”。這樣就避免了意外消耗 token 的情況。對於傳回的響應結果,如果開發者覺得沒什麼幫助,也可以用 ESC 鍵快速取消。

Zed 還提供內聯助手功能,可幫助查看當前代碼的上下文。Zed 團隊成員 Marshall Bowers 發佈了關於如何用 AI 進行內聯文檔,以及在不同模板系統間翻譯代碼的文章。其中提到 “使用 post_link 等函數 auk DSL 重寫此 HTML”之類的命令。他還提到,AI 可用於協助補全大部分模板代碼。

Zed 開源的背後動機

Nathan Sobo 在談及將 Zed 開源的決策時指出,主要目的是為了打造一款卓越的產品。他們的願景是創造世界上最先進的代碼編輯器,並且讓廣泛的開發者社區參與其使用和改進。由於 Zed 的目標用戶群體主要是程序員,開源能夠吸引更多的人才加入其開發。此外,開源的過程本身更有趣,有助於與用戶建立更深層次的聯系。Sobo 表示,他們不僅為 Zed 的成果感到自豪,而且也珍視在創建過程中的經歷,並希望與社區分享這一過程,從中學習並不斷完善 Zed。

Sobo 進一步強調,他們堅信,要構建並維護世界級的編輯器,最佳方式是將其與一個可持續的商業模式結合。為了支持一個全職團隊持續領導 Zed 的開發,他們認為開源並不與商業成功相沖突。相對於出售專有編輯器,他們更願意提供與用戶編輯器無縫集成的服務,從而提高用戶和團隊的生產力。例如,Zed Channels 就是一種這樣的服務,它目前對所有人免費,但計劃在一段試驗性測試期後對私人使用開始收費。他們還看到了通過提供服務器端計算支持 AI 功能作為另一種變現方式。

Sobo 明確表示,他們決定開源迄今為止編寫的所有代碼。然而,未來他們可能會針對商業和企業用例提供專有產品,盡管這些專有代碼隻會占他們開源代碼的一小部分。他們還承諾,創造收入的需求永遠不會幹擾用戶編寫軟件的需求,比如他們承諾永遠不會在 Zed 中展示橫幅廣告,且如果這種情況發生,用戶總是可以選擇從源代碼構建自己的 Zed 版本。

Zed 未來:無縫 AI 集成與跨平臺支持

根據項目路線圖,Zed 未來將支持無 OpenAI 密鑰 AI 功能,在終端中實現 AI 內聯輔助、簡化輔助界面,並允許 AI 訪問“緩沖區、文件、LSP、終端提示符”等功能。

除了擴展不足之外,Zed 還存在其他一些問題。首先是能夠支持的編程語言有限。目前支持效果最好的是 Rust、TypeScript 和 Python,其他部分語言也能支持,但微軟 C# 等語言則完全無法支持。此外項目描述還提到,“目前正積極開發將 Zed 與任意語言服務對接的功能”。

最後一個問題,就是當前 Zed 還隻提供 mac 版。在 GitHub 上的回應中,開發團隊表示未來將支持其他平臺。路線圖中提到了對 Linux 和 Web 的支持計劃(Web 版可能通過 WebAssembly 實現,這也符合 Rust 的語言特性)。但截至本文撰稿時,項目組還從未提及 Windows 版本。也就是說除非通過 Windows Subsystem for Linux,否則 Windows 平臺的用戶恐怕還要再等上一段時間。

原文鏈接:

https://www.infoq.cn/article/BoLChqlH7kIjHDxRTa3d