從 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,或許不久之後就會被它徹底圈粉了。
隨機一篇部落格
留言
登入後參與討論