My experience switching to Zed from NeoVim

Ellie Huxtable

從 NeoVim 轉向 Zed 的使用體驗

原文由 Ellie Huxtable 發布,訂閱此部落格

至少過去十年來,我一直都在用 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 - 在整個工作區中搜尋
  • <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"
    }
  }
]

我覺得 keymap 能用運算式來指定 context 的設計很棒。比起像 inoremap 這類寫法,可讀性高多了。

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

編輯體驗

我覺得 Zed 用起來非常舒服。一切都滑順無比,可以明顯感受到他們在效能上花了很多功夫。介面非常簡潔,確實讓我想起 Sublime。

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

會留下來嗎?

還不會。但已經很接近了!這是我試過的所有編輯器中,用得最久的一套,但我還是覺得在編輯器裡用終端機有點怪——我比較習慣在終端機裡用編輯器。不過這完全是我個人的問題,跟 Zed 無關。

除此之外,Vim 模擬還是有幾個缺口。我平常很重度使用標記,但這功能目前還沒有,我一直因此卡住。還有,我的 jj 綁定偶爾會失效——可能是我按得太快了。不過這個問題不太容易重現,就只是偶爾會發生。

我想我會繼續關注 Zed,或許不久之後就會被它徹底圈粉了。

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

留言