在 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 + float windows – 開啟一個浮動終端,連接至 LLM 會話,以獲得快速回饋。(使用者 avsn)
- Custom Lua configs – 約 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用於提交審查、shuck用於迭代 grep、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 仍是現代軟體開發中相關且高效的中心。