为什么不直接嵌入 Neovim? - Zed 博客

主要观点:作者从使用 Vim 15 年切换到 Zed 编辑器,介绍 Zed 的 Vim 模式及相关情况,包括其特点、与 Vim 的差异、不嵌入 Neovim 的原因等。
关键信息:

  • Zed 有 Vim 模式,可通过设置启用,支持多种标准和扩展操作,如vim-surround相关操作、代码注释切换等,但仍有部分功能缺失待完善。
  • 长期 Vim 用户发现 Vim 有很多未被重视的操作,如gs、带计数的操作等,这些细节在实现 Zed 的 Vim 模式时带来挑战,因为 Vim 和 Zed 基于不同基础。
  • Vim 基于字符,Zed 基于字符间的槽,这导致在处理换行等问题上有差异,Zed 的 Vim 模式努力使其尽可能像 Vim 但有局限性,不能抛弃 Zed 的基础。
  • 不嵌入 Neovim 是因为 Neovim 会抛弃 Zed 的基础,如数据结构等,这些是 Zed 成为高性能协作文本编辑器的关键,重复构建会增加难度。
  • Zed 的 Vim 模式基于 Zed 基础,可与非 Vim 模式的 Zed 功能结合,如多光标操作等,还可通过自定义绑定扩展功能。
  • Zed 在测试中使用 Neovim,通过NeovimBackedTestContext运行无头 Neovim 实例,模拟按键操作并保存状态用于测试 Zed 的 Vim 实现。
    重要细节:
  • 可通过{ "vim_mode": true }在 Zed 设置中启用 Vim 模式。
  • 介绍了多种 Vim 模式下的操作及对应的键位,如h, j, k, l等。
  • 提到一些 Vim 操作的特殊用法,如5z.等。
  • 阐述了 Vim 和 Zed 在处理换行等方面的差异及 Zed 的处理方式。
  • 展示了在 Zed 的 Vim 模式下的一些操作示例及相关视频。
  • 给出了在 Zed 中自定义的 Vim 模式键绑定示例。
阅读 10
0 条评论