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"
    }
  }
]

我觉得键位映射允许以表达式形式指定上下文这一点非常酷。比起 inoremap 之类的写法,可读性好太多了。

你可以在默认键位绑定中找到其他操作(cmd-shift-p,搜索 default keybindings)。

编辑体验

我发现 Zed 用起来非常舒服。一切都如丝般顺滑,你能真切感受到他们在性能上下了很大功夫。界面非常简洁,有点让我想起 Sublime。

他们的UI 框架是用 Rust 写的,希望很快能看到更多应用采用它!

会一直用下去吗?

暂时还不会。但已经很接近了!我用它的时间比之前尝试过的任何其他编辑器都要长,但在一个内置终端的编辑器里工作——而不是在一个带编辑器的终端里——我仍然觉得有些不习惯。不过这完全是我自己的问题,与 Zed 无关。

除此之外,Vim 模拟还有几个缺口。我很重度地使用标记(marks),而它还没有实现——这让我频频碰壁。另外,我的 jj 绑定时不时会失灵——也许是我按得太快了。不过我没法轻易复现这个问题,它只是偶尔发生。

我想我会继续关注 Zed,也许不久之后它就能彻底把我转化过来了。

原文由 Ellie Huxtable 发布

本文章由 stealth/ox-alpha 进行翻译