在 AI 时代使用 Vim:社区策略与调整
在 AI 时代使用 Vim:社区策略与调整
即使 AI 编写代码,Vim 仍然有意义
Vim 的核心优势——快速的模式化导航、强大的文本对象以及轻量级的可扩展性——仍然对那些现在更多时间在审查代码而非编写代码的开发者有用。大多数受访者仍将 Vim 作为主要或次要编辑器,配合 AI 代理使用,而不是完全替代它。
将 AI 与 Vim 集成的常见模式
在 tmux 或分割窗口中并排使用 AI 代理
"我在使用 TMUX,左侧是 Claude Code,右侧是 Vim,但我主要用 Vim 查看代码并做小改动,而代码改动的审查直接在 GitHub PR 上进行。" – 原帖作者
许多用户在 Neovim 旁边的窗格中运行 LLM(Claude、Cursor、本地 LLaMA 等)。这种布局可以让他们:
- 向模型请求解释或建议。
- 通过小插件或手动粘贴将模型的输出应用到当前缓冲区。
- 保持编辑器对导航和快速编辑的响应性。
用于内联 AI 交互的专用插件
- magenta.nvim – 一个个人工具,将选中文本发送给 Claude 或其他代理并用结果替换。(用户 anonymid)
- Avante – 提供内联指令,但在小型本地模型上表现不佳。(用户 data‑ottawa)
- Neoterm + 浮动窗口 – 打开一个附加到 LLM 会话的浮动终端,以实现快速反馈。(用户 avsn)
- 自定义 Lua 配置 – 大约 700 行 Neovim Lua,用于同步代理写入、自动格式化并提供提醒。(用户 boriselec)
这些插件让工作流保持在 Vim 内部,避免切换到独立的 IDE。
工作流转变:从编写到审查
"我越来越多地花时间打造技能,以确保它们不会破坏代码,越来越信任 Coding Agent,因而更少直接查看代码…" – 原帖作者
开发者报告说,他们从大量敲键转向:
- 阅读差异 – 使用
diffview.nvim(用户 galoisscobi)和git diff | view -(用户 ramses0)等工具快速扫描更改。 - 提示工程 – 在 Vim 正常模式下编写精确提示(
C‑n/C‑p、*、#、gf),以引导 AI。 - 选择性手动编辑 – 仅对小且关键的改动手动处理,其余由模型生成或优化。
结果是对代码库形成更紧凑的认知模型,同时利用 AI 处理样板或探索性任务。
Vim 相较于全功能 IDE 仍具吸引力的原因
- 模式化效率 –
*、#、:set fdm=indent、zM/zR以及{}等命令让用户在不离开键盘的情况下在大型代码库中跳转。 - 轻量级持久性 – Neovim 可以容纳多个终端缓冲区,使得代理可以持续运行而无需单独的 tmux 会话(用户 MantisShrimp90)。
- 可定制性 – 用户构建专属工具(如用于提交审查的
glean、用于迭代 grep 的shuck、用于智能文件挑选的needle),与 Vim 紧密集成。 - 低开销 – 即使代理响应慢,编辑器仍保持流畅,许多开发者仍然只在偶尔任务时使用 VS Code 的 Vim 扩展(用户 ramses0)。
替代方案与观点
- 保持 Vim 不变 – 像 cryo32 这样的用户认为没有必要修改已有 30 年历史的工作流。
- 转向其他编辑器 – 有用户迁移到 Vis、Zed 的 Vim 模式,或使用带 Magit 的 Emacs 进行以审查为中心的工作(用户 Gualdrapo、throw2ih020、bryanlarsen)。
- 混合设置 – 少数人保留 Vim 用于快速编辑,同时在更大规模的重构时使用 VS Code 或其他 IDE(用户 ventana)。
AI 时代 Vim 用户的实用要点
- 保留 Vim 用于导航和小改动 – 利用其模式命令快速浏览差异、跳转定义并应用快速补丁。
- 在分割窗格中运行 LLM – tmux 或 Neovim 的终端缓冲区让你可以在不离开编辑器的情况下提问或生成代码片段。
- 采用或编写最小化 AI 插件 – 即使是一个简单的命令,将可视选区发送给 LLM 并替换文本,也能显著简化工作流。
- 投入差异视图工具 –
diffview.nvim等插件可以把 Vim 变成强大的代码审查环境。 - 把 AI 当作协作者,而非替代品 – 使用模型进行建议、解释或重构,但对关键改动保持手动控制,以维护代码质量。
通过将 AI 视为伴侣而非替代者,Vim 仍然是现代软件开发中相关且高效的中心枢纽。