主要观点:作者从使用 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 模式键绑定示例。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。