Zed 的 Vim 模式持续改进!我最新最喜欢的功能是 ! 操作符,它是常见 Vim 操作符中的“最后一个坚守者”。
但我们也在命令面板方面取得了进展,例如添加了 g// 和 v//,用于在匹配(或不匹配)的行上执行命令。
更广泛的社区也一直在努力引入顶级的 Vim 插件。我们有 vim-surround、sneak 的版本,最近还有 tree-sitter 文本对象。
总而言之,如果你今天使用 Vim,那么你在编辑器中日常想做的绝大部分事情都将在 Zed 中完美运行,就像在 Vim 中一样。
那么,接下来呢?
2025 年,我想在 Zed 中的 Vim 方面重点关注三个领域
- 构建非编辑器用户体验
- 提升与 Vim 逐个边缘案例匹配的标准。
- 创建一个新的、更好的多光标 Vim 集成
非编辑器用户体验
虽然 Vim 似乎“没有用户界面”,但这是一种障眼法。在输入 : 后,你进入了 ex 模式,它充满了使其良好工作的功能。特别是,我想把以下功能带到 Zed 中:
- 命令面板中的文件名补全,例如
:e README.md或:w README.md.latest - 命令历史,这样你就可以修复一个
g//而无需再次输入。 :norm用于运行一系列按键(以及其他一些缺失的命令)
还有其他 Vim UI 可以引入 Zed:
:registers查看寄存器。:marks类似。
有趣的是,Vim 中的寄存器和标记比 Zed 更强大,因为它们在重启后仍然会将状态持久化到磁盘。我们也需要构建这个功能。
最后,Zed 有 Vim 没有的显著功能,我希望它们感觉像 Vim 原生功能一样:
- 协作功能的键盘快捷键,如“跟随下一个人”,以及通过键盘加入和离开通话、静音/共享等操作方式。
- AI 编辑预测器的更好快捷键和普通模式下的处理。同样适用于内联助手,它目前在 Vim 模式下也经常出现问题。
- 将更多类似 netrw 的绑定引入项目面板。
- 与即将推出的 Git 面板更紧密的集成。
一致性
从 Vim 转向 Zed 的人被 Zed“默认即用”的特性所吸引:语言服务器开箱即用,以及高级功能(AI、协作)。但是,没有什么比一个无法完全像 Vim 一样工作的 Vim 模式更令人沮丧的了。我们收到了许多 VS Code Vim 扩展的“难民”,他们抱怨最多的就是“感觉不对劲”。
Zed 已经非常接近 Vim 了。我们有广泛的“并排”测试,通过运行无头 Neovim 来确保我们的键盘快捷键执行完全相同的操作。尽管如此,总有更多的事情要做,既要添加剩余的次要移动,例如 zL/zH,又要修复 d]} 等中的边缘情况。
真正出色的多光标体验
Zed 具有多光标功能,并且 Zed 的 Vim 模式在大多数情况下与多光标“按预期”工作。我想解决的问题有两个方面:
- 整理绑定,使其围绕 Vim 和多光标形成一套连贯的功能集。
- 特别是确保您可以轻松地旋转进入多光标,就像它是一个不同的模式一样。
- 为 Zed 添加支持,以便在您选择错误时仅移动您的一个选择。
有一些编辑器在这方面有先例,特别是 Kakoune 和 Helix;但我还想从 Vim 插件中获取灵感。
让我们开始吧
如果您想帮助完成其中任何一项工作,可以预约与我结对编程。也欢迎您查阅Vim 频道笔记中的列表,并选择您感兴趣的事项。虽然我很乐意接受突如其来的 PR,但我总是更喜欢先沟通讨论。
如果我遗漏了什么,或者没有优先考虑什么,请将其添加到问题追踪器,或者为您认为重要的事情点赞。