Kyde:高效能 Rust 為基礎的 Git Commit 與 Diff 編輯器

Kyde:高效能 Rust 為基礎的 Git Commit 與 Diff 編輯器

Kyde 是一款快速、原生的 commit 與 diff 程式碼編輯器,旨在取代笨重的基於 JVM 的 IDE,適合主要使用編輯器來檢視變更與提交程式碼的開發者。它以 Rust 與 GPUI 框架構建,著重於低延遲效能與精簡的 Git 工作流程。

GPU 加速效能

Kyde 透過 GPUI 框架(與 Zed 編輯器相同的框架)使用原生 GPU 渲染,達成高效能的繪製。即使處理極大型檔案,也能保持流暢捲動與低延遲。

  • Viewport 虛擬化: 只在每一幀渲染目前螢幕上可見的列,避免在巨量檔案上出現效能退化。
  • 非同步語法突顯: 大檔案會立即以純文字打開,語法突顯在背景執行,避免阻塞 UI。
  • 效能基準: 作者回報在約 120fps 的速度下捲動 37,000 行的 package-lock.json 檔案。

核心 Git 工作流程功能

Kyde 提供視覺化介面來執行常見的 Git 操作,實質上讓 git add -p 變得可視。它聚焦於檢視與提交變更所需的核心工具。

Commit 與 Diff 檢視

Kyde 具備並排 diff 檢視,支援單字層級的突顯。中間的 gutter 允許使用者直接在 UI 中暫存或還原特定程式碼區塊,提供對提交內容的細緻控制。

分支與檔案管理

  • 分支切換器: 可搜尋的樹狀結構,將分支組織成資料夾,並追蹤最近的本機根目錄。
  • 回滾: 原生視窗搭配勾選框樹狀結構,讓使用者可選擇性回滾變更,並可選擇刪除新增的檔案。
  • 推送: 整合於狀態列的按鈕與右鍵選單,當本機領先上游分支時可直接推送變更。

搜尋與導覽

Kyde 實作多項類 IDE 的導覽工具,以維持工作效率:

  • 模糊搜尋: ⌘⇧O / ⌘P 用於「前往檔案」,⌘⇧A 用於「尋找動作」。
  • 全域搜尋: ⌘⇧F(利用 git grep)在整個倉庫中執行全文內容搜尋。
  • Scratch 檔案: 專用的暫時緩衝區,用於臨時筆記或草稿。

技術棧與架構

Kyde 從頭開始使用一組高效能函式庫構建:

  • GPUI: GPU 渲染的 GUI 框架(Apache-2.0)。
  • Git: 應用程式會呼叫系統的 git,而非使用 libgit2
  • Similar: 用於行與單字 diff(Apache-2.0)。
  • Tree-sitter: 透過按需語言套件提供語法突顯(包括 TypeScript、Rust、JSON、Python 與 Go)。

安裝與設定

Kyde 主要以 macOS 應用程式形式發佈。雖然程式碼是跨平台的,且 GPUI 可在 Windows 與 Linux 上執行,作者目前僅提供 macOS 的預建發行版。

  • 安裝: 使用者可從 GitHub releases 頁面下載 kyde-macos.zip
  • 安裝說明: 由於應用尚未簽署程式碼,macOS Gatekeeper 可能會阻擋首次啟動;使用者必須右鍵點擊並選擇「Open」或透過 xattr 清除 quarantine 標記。
  • Shell 整合: Kyde 提供可選的 ky shell 指令符號連結於 ~/.local/bin,以便直接從終端開啟倉庫。
  • 快捷鍵映射: 編輯器提供 WebStorm 與 VSCode 的預設快捷鍵組合,以降低上手阻力。

社群回饋與討論

社群對此專案的反應不一,既關注技術實作,也關心專案的起源。

"我喜歡它的外觀。但終端已經有相當優秀的 diff 與 commit 工具。"

部分使用者希望加入更多無障礙功能,例如針對散光使用者的亮色主題,並支援 Git 子模組。另有使用者質疑相較於自訂的 Neovim 設定或 AI 代理程式碼工具,原生應用的價值何在。

此外,關於專案的「vibe‑coding」面向也引發大量討論,因為作者坦承不懂 Rust。此專案是使用 AI 協助完成的,這在開發者間激起了關於 AI 產生程式碼是否算程式設計的辯論。

已知限制

  • 發行版: 預建二進位檔僅提供 macOS。
  • 編輯器功能: 目前缺少軟換行與光標跟隨捲動。
  • 緩衝區管理: 編輯器目前使用平面 String 作為緩衝區;未來計畫改用 rope 結構,以更有效處理極大型編輯。

Sources