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 更省力的人來說,這是一個市場,我祝他們好運:我認爲它是那裏的領跑者。