【译文】从 Vim 到 Zed

在使用 Vim 约 20 年之后,去年 12 月我改用 Zed 作为我的主要编辑器。因为有些朋友问我关于这个转变的问题–“现在你在 Zed 工作了,你是在用 Zed 而不是 Vim 吗?- 我想我应该写一写这件事。你们现在知道我确实换了,所以剩下要谈的就是 “为什么 “了。

不过在此之前,我得先说清楚:我喜欢 Vim 和 Neovim。在过去的 13 年里,我一直在专业地、专注地、钦佩地、大声地使用 Vim(我猜这就是人们问我是否换了 Vim 的原因)。12 年前,我写过一篇关于如何更好地使用 Vim 的博文,从那时起,我就对 Vim 保持着浓厚的兴趣。5 年前,我改用 Neovim。发现 Neovim 及其社区所能提供的一切给我带来了无穷乐趣。我在 Vim 上学习了 10000 小时。

“好吧,我们明白了:你曾经使用过 Vim,而且你老了”–没错。但我必须告诉你们这一切,因为我以前写过关于测试的文章,并在其中写了一段关于证书的内容,但人们仍然认为我只是还没有写出足够的测试。

所以,让我用第二段话再说一遍:我爱 Vim,我了解 Vim,我非常擅长 Vim。我闭上眼睛就能听到德鲁-尼尔的口音。我知道我的教皇是谁。我记得德里克说过 “神马 Vim”。我跟加里-伯恩哈特学过 Vim 技巧。TJ读Vim手册时我也在场。我就住在家里。我曾花了一个圣诞假期通读《最佳 Vim 技巧》,当时它还是 vim.org 上的一个 .txt 文件。别人把 :w 随处乱放,我却在写散文时抽动 vapgq。我对 Vim 宏的使用让成年人泪流满面。不知道是惊呆了,还是 “停下手头的工作,我们可以继续前进”,但这对我们的讨论无关紧要。

希望现在大家能明白的是,我不会轻易更换编辑器。但我还是换了。为什么呢?

让我们先从显而易见的开始,尽管这与其说是理由,不如说是要求:Zed 有 Vim 模式。如果没有这个,我是不会换Zed的。但吸引我、让我选择 Zed 的原因是,它的 Vim 模式可以与 Zed 的其他部分兼容。Zed 有很多我一直很好奇的功能:多光标、多选择、选择的撤销/重做堆栈……在 Zed 中,我可以在使用这些功能的同时使用 Vim 动作和操作符。和我一样,试想一下:Vim 模式与多光标、多选择相结合,会有多大的威力?这就是我的好奇心所在。(反过来说,这也是为什么我觉得将 Neovim 嵌入 Zed 的想法有点无聊。在我看来,这只会让 Zed 成为另一个图形用户界面包装器)。

使用 `cmd-d` 创建多个选区并与 Vim 动作相结合。动图备份地址

然后是多缓冲区。哦,多缓冲区。真是个好东西。简而言之:多缓冲区允许你在一个标签页中查看多个缓冲区(文件)中的多个摘录,而且(最神奇的是这里)还可以编辑它们,就像它们都在同一个文件中一样!是的!您可以搜索 my_dumb_typo,或者查找某个变量的所有引用,或者查找某个接口的所有实现,所有结果都会显示在多缓冲区中,您可以在多缓冲区中编辑所有摘录!真是太棒了Vim 用户:想象一下,如果你能编辑 quickfix 列表就好了。Emacs 用户:是的,你已经知道了,并称之为 Occur 模式,感谢你的关注。

运行中的多缓冲区:我正在同一个标签页中编辑两个文件。动图备份地址

多光标、多缓冲区、多选择,再加上 Vim 模式,这些功能似乎无穷无尽。我怎么能不试试呢?

在转到抽象问题之前,先说说实际问题:是的,我在 Zed 工作,这也是我使用它的一个原因。即使我不在那里工作,我还会用它吗?是的,在我加入 Zed 之前,我使用过。现在我使用 Zed 是因为我在 Zed 工作,我在 Zed 工作是因为我使用了 Zed 并发现它非常有趣。把这个问题扯成假设似乎毫无意义。我可以告诉你的是,如果不使用 Zed,我就不会在 Zed 工作–这在我看来是荒谬的假设。(如果我不在那里工作,我会写这篇文章吗?当然会。我在那里工作,是因为我是那种会写关于更换编辑的博文的人吗?)

现在,让我试用它、更换它并继续使用它的抽象原因是:Zed 背后的价值观–编辑和团队–与我自己的价值观重叠。性能、简洁、专注、美学、对工艺的热爱–这就是我第一次使用它时所看到的,也是引起我共鸣的地方。我不确定创始人是否会同意这份清单,但这重要吗?有时,你在使用软件时,就好像你路过一家酒吧,听到里面传出的音乐,你会立即开始点头–你是进去听,还是回家听你一直在听的音乐?

“但是,Thorsten,我想知道的是:它支持 Vim 宏、寄存器、标记吗?那些彩虹括号呢?- 它支持其中的一些,也会支持很多其他功能,但可能永远无法与 Neovim 实现 100% 的功能兼容。但我必须承认,我并不那么在意。我需要它给我 90% Vimmy 的感觉,这样我才不会骂人,但对我来说,比获得另外 10% 的感觉更重要的是,它是一种新的东西。

我经常尝试新工具,有时甚至会换用新工具。为什么呢?因为你永远不会知道你会发现什么,很多时候会有一些有趣的东西值得学习,或者可以调整到你原来的工作流程中。

下面是一些例子。直到几年前,我还没有使用过任何自动补全功能,只用过 Vim 的文件名补全功能。后来我尝试了语言服务器和自动完成功能,现在我已经离不开它了。嵌套提示–我第一次在 VS Code 中看到它,在编写 Rust 时不得不试用它,最后纯粹因为嵌套提示,我在 VS Code 中编写了几个月的 Rust,然后当嵌套提示出现在 Neovim 时,我又换回了 Neovim,现在我确信嵌套提示改变了开发工具的游戏规则。今年,我还放弃了常规设置中的 tmux,纯粹是因为我想知道在没有 tmux 的情况下使用 Ghostty 是什么感觉,以获得更高的性能。早在 2017 年,我就开始调戏 Emacs,现在还经常想起我发现的那些想法。

就是这样,我改用 Zed 是因为它有一个 Vim 模式,里面有一些非常有趣的文本编辑机制,因为它的价值观引起了我的共鸣,因为我想尝试一些新东西。

我现在还用 Vim 吗?是的,用于一些配置文件,或者当我想用 oil.nvim 编辑一个目录时,但我编程的主要编辑器是 Zed。有很多东西要学。

本文文字及图片出自 From Vim to Zed

余下全文(1/3)
分享这篇文章:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注