从 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"
}
}
]我觉得按键映射中可以用表达式来指定上下文这点很酷,比 inoremap 之类的方式直观多了。
你可以在默认快捷键中找到其他操作(按 cmd-shift-p,搜索 default keybindings)
编辑体验
就我的体验而言,Zed 用起来非常舒服。一切都极其流畅,能明显感觉到团队在性能上投入了大量精力。界面非常简洁,确实让我有点想起 Sublime。
他们的UI 框架是用 Rust 编写的,希望以后能看到更多基于它的应用!
会一直用下去吗?
暂时还不会。但已经很接近了!它是我尝试过的所有编辑器中用得最久的一款,不过我还是觉得在一个内置终端的编辑器里工作有点别扭——而不是在一个内置编辑器的终端里。这完全是我个人的习惯问题,和 Zed 本身无关。
除此之外,Vim 模拟上还有一些小缺口。我平时重度依赖标记(marks),而这个功能目前还没有——这让我时不时就会遇到问题。另外,我的 jj 映射偶尔会不生效——可能是我按得太快了。不过这个问题不太容易复现,只是偶尔会出现。
我想我会继续关注 Zed,也许不久之后它就能彻底让我转过去了。
随机一篇博客
评论
登录后参与讨论