我從 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,或許不久之後它就能讓我完全轉換過去。
隨機一篇部落格