My experience switching to Zed from NeoVim

Ellie Huxtable

我從 NeoVim 轉換到 Zed 的經驗

至少在過去十年間,我一直都在使用 Vim/NeoVim。當我的工作流程變得更依賴終端機後,我就從 Sublime Text 轉換了過來。

在那之後的幾年裡,我嘗試過非常多編輯器——但最終總是回到 Vim。VSCode 很酷,但 Vim 模擬就是不太對勁。我老是被自己絆到,體驗非常突兀。我也覺得這個編輯器有點過於擁擠——拜託,就讓我安安靜靜地編輯文字就好!

我也試過 emacs(其實是 evil)、helix 和其他編輯器。

但到目前為止,Zed 是最接近讓我動心轉換的編輯器。我在去年某個時候試用過一次,但當時感覺還不夠成熟——而且,那時候它還不是開源的。

我是從Atuin 這個 Rust 專案開始試用的。所有工具都自動設定好了,我完全不需要自行設定。很棒!

設定

Zed 開箱即用的體驗就已經相當不錯,但還是有幾個地方我想調整。

以下是我的完整設定:

{
  "theme": "Gruvbox Dark Soft",
  "vim_mode": true,
  "buffer_font_size": 12,
  "ui_font_size": 14,
  "buffer_font_family": "FiraCode Nerd Font",
  "relative_line_numbers": true,
  "terminal": {
    "line_height": "standard"
  },
  "lsp": {
    // Specify the LSP name as a key here.
    "rust-analyzer": {
      //These initialization options are merged into Zed's defaults
      "initialization_options": {
        "checkOnSave": {
          "command": "clippy"
        }
      }
    }
  }
}

除了顯而易見的佈景主題/字型設定之外,我覺得終端機的行高在預設狀態下有點奇怪。看起來比應有的高度還高一些,導致某些 TUI 顯示起來怪怪的。將它設為「standard」後就解決了這個問題。

我也針對 Rust 調整了 LSP 的設定。

按鍵綁定

接下來我修改的是 Vim 的按鍵綁定。預設的綁定已經相當標準,但有幾個核心的自訂設定是我維持生產力不可或缺的。

  • jj - 我將 jj 重新對應為 esc,讓手指可以一直留在基準鍵列上
  • <leader>w - 用於儲存目前的緩衝區
  • <leader>s t - 在整個工作區中進行 grep 搜尋
  • <leader>f - 用於搜尋檔案

據我所知,Zed 並沒有 leader 的概念。沒關係!我可以直接寫死這些綁定。

以下是我的設定:

[
  {
    "context": "Editor && vim_mode == insert && !menu",
    "bindings": {
      "j j": "vim::NormalBefore"
    }
  },
  {
    "context": "Editor && vim_mode == normal && !menu",
    "bindings": {
      "space w": "workspace::Save",
      "space s t": "workspace::NewSearch",
      "space f": "file_finder::Toggle"
    }
  }
]

我覺得按鍵對應能夠用運算式來指定 context 這點非常酷。比起像 inoremap 這樣的寫法,閱讀起來容易多了。

你可以在預設的按鍵綁定中找到其他動作(cmd-shift-p,搜尋 default keybindings)

編輯體驗

我覺得 Zed 用起來非常令人愉悅。一切都非常流暢,你真的可以感覺到他們在效能上花了很多功夫。使用者介面非常簡潔,讓我有點想起 Sublime。

他們的UI 框架是用 Rust 撰寫的,希望很快就能看到更多應用程式使用它!

會長久使用下去嗎?

還不會。但已經很接近了!比起其他我嘗試過的編輯器,我使用 Zed 的時間還要長,但我仍然覺得在編輯器裡使用終端機有點奇怪——而不是在終端機裡使用編輯器。不過這完全是我個人的問題,和 Zed 無關。

除此之外,Vim 模擬還有幾個落差。我非常依賴標記功能,但目前還沒有實作——這讓我一直被絆到。不時我的 jj 綁定似乎沒有觸發——也許是我按得太快了。不過我沒辦法輕易重現這個問題,它只是偶爾會發生。

我想我會持續關注 Zed,或許不久之後它就能讓我完全轉換過去。

原文由 Ellie Huxtable 發布

本文章由 muse-spark-1.2-contributor 進行翻譯