Open7

Neovim での AI コーディングを求めて

akinekoakineko

初スクラップ
雑で記事にするまではない内容でも公開して残すと誰かの役に立つかもというのをやりたくて、前からスクラップが良さそうに思っていたので使ってみる

ざっくり背景

  • hrsh7th/nvim-cmp + zbirenbaum/copilot-cmp によるコード補完は導入済み
  • 普段は Web の Claude AI を利用している
    • 設計相談も含めて練るのが個人的にやりやすい & ログとしてあとで見返したい
  • 既存コードを加味した修正などを行う際に vscode の GitHub Copilot Chat を利用
    • neovim の操作 + plugin が使いたいので vscode-neovim を入れている
    • Copilot Chat を利用すると vscode-neovim のリンクが切れて拡張の再起動が必要になる
  • neovim と vscode の言ったり来たりも疲れたので neovim で完結する方法が欲しい
    • 将来はともかく現時点は GitHub Copilot を対象とする

細かい設定までは書きませんが似たような感じで探してる人のお役に立てればと感想を残しておきます

akinekoakineko

CodeCompanion.nvim

https://codecompanion.olimorris.dev/
https://github.com/olimorris/codecompanion.nvim

設定はドキュメントよりもコード見た方が早い
https://github.com/olimorris/codecompanion.nvim/blob/main/lua/codecompanion/config.lua

  • 多種のモデルに対応している
  • 組み込みのプロンプトの他言語対応が賢く日本語化が簡単
    • All non-code text responses must be written in the %s language indicated.
  • コマンド実行やファイル作成などを行うエージェント機能に対応している
    • GitHub Copilot でこの機能の利用は BAN が怖いので試さず
  • コンテキストの追加に fuzzy finder 使える
    • /files と入力すると telescope などが起動する
    • lspurl もコンテキストに追加できる
  • コード生成後に内容を確認して適用する部分のサポートが弱い
    • @editor で権限付与するとコードが一気に書き換わる
      • 日本語混じったコードだと何度か壊れた
    • インラインアシストって機能だと diff 表示になるけど読みづらい
      • デフォルトは 3 way merge ツール系でよくある 3 分割画面で好みでない
      • mini.diff と連携させるとインライン化されるけど 1 行単位の細かい diff になる
        • CodeCompanion と mini.diff の両方にアルゴリズム設定があるので調整は出来そう
    • これらを避けるとチャット画面で内容確認後にコピペになる
      • gy でコードだけコピー機能はある
  • プロンプトを設定して置いて選んで使う機能あり
  • ドキュメントサイトがあるけど情報が分散してて把握しづらい
    • 順番に読むときはいいけど後から読み返す時に迷う
  • 独自の魅力や設計の良さは感じるが個人的にメインで欲しいコード反映が弱かった
    • Neovim で API 使いまくった AI エージェントやりたいなら良さそう
akinekoakineko

CoplilotChat.nvim

https://github.com/CopilotC-Nvim/CopilotChat.nvim
https://qiita.com/haw_ohnuma/items/1ec8ef5091b440cbb8bd
https://tech.layerx.co.jp/entry/2024/12/25/114758

  • 対応モデルは GitHub Copilot のみ
  • 多種のコンテキストに対応しているが追加する際の補助機能が弱い
    • #file:<path> は自身で入力する必要があり fuzzy finder などは使えない
    • #buffer のカレントと #buffers の全バッファが基本になりそう
      • これと選択したコードに対する質問とで十分ではある
  • プロンプトを選択して使う機能あり
    • 組み込みのプロンプトを日本語で使いたい時は日本語で書き直す必要あり
    • /COPILOT_GENERATE などのベースプロンプトと組み合わせて作る
  • Sticky というプロンプト固定機能あり
    • 主にコンテキストの固定に使う
    • 他プラグインは自動的に固定されて不要になったら外す形式になってる
  • コード反映はチャット画面からの適用のみ
    • <C-y> で即時反映できるので手間ではない
  • 欲を言えばの部分はあるけど洗練されていて不満なく使いやすい
akinekoakineko

avante.nvim

https://github.com/yetone/avante.nvim
https://namileriblog.com/mac/neovim_avante/

  • 多種のモデルに対応している
    • コード補完機能を GitHub Copilot で使って BAN された報告あり
    • この機能はまだ実験的機能だしコード補完系プラグインでカバーできる
  • 機能はシンプルでコード編集に特化している
    • 選択したコードに対するコメント追加などの簡易な直接編集
      • 指示すれば大きめの編集も出来るが事前の差分確認なしなので向かない
    • チャット形式で生成したコードの反映
      • 反映方法は 2 パターンある
        • チャット画面からの反映
        • ファイル上にコードを埋め込んだ差分表示からの反映
      • どちらも見やすく承認操作もしやすい
  • 対応コンテキストの種類や追加方法は他と比べると弱い
    • ファイル or コード選択のみ
    • fuzzy finder 使ったファイル選択機能はあるが起動が遅い
      • ファイルのリストアップが自前でやってるっぽくてここが遅い
    • カレントバッファのファイルを追加するコマンドがあるので不便さはあまりない
  • 他 2 つにあったプロンプトを選択して適用する方法はなし
    • レビュープロンプトを用意しておいて適用など
  • チャットログが neovim を再起動しても残り前回の続きから行える
  • 内部のベースプロンプトが優れているのか同じ指示でも結果の質が一段階良い

補足: ドキュメント上は GitHub Copilot の別モデルの説明はありませんが指定する文字列は全プラグイン共通なので claude-3.5-sonnet も使えます

akinekoakineko

一旦の結論

  • avante.nvim をメインに使っていく
    • 返答の質が他よりも一段階良い
    • neovim 上でやりたいコード編集や反映の使い勝手が一番好み
  • CoplilotChat.nvim をサブとして使って様子見する
    • レビューやドキュメント追加などの提携操作をサクッとやれる部分に惹かれている
      • avante.nvim は都度入力(そのうちキーマップ等を自作するかも)
    • 継続利用した際の自分が求めるものを知る為の比較対象として置いておく

CodeCompanion.nvim は部分的に欲しい機能はあるものの自分の今の用途には合わずストレスポイントが多かったので利用を辞めました

akinekoakineko

2025/04/12 の感想

現在の僕の AI コーディングのスタイル

  • Windsurf と VSCode Copilot Chat と Neovim を併用している
  • 最初の下地づくりやテンプレ作業などガッとやりたい部分は Windsurf を使う
    • Windsurf のクレジットを消費したくない実験的なチャットやクレジットが切れた後に VSCode を使っている
  • その後のコード編集や既存のコードの細かい編集は Neovim を使って自身で書きつつ補助的に AI を使う

avante.nvim

  • 変わらず返答の質は一段階良いので自身がガッツリ書く時の補助はこれを使っている
  • Cloude 3.7 sonnet に切り替えたタイミングで不安定になった
    • ドキュメントに Aider mode は特定の LLM への依存度が強いとあるので恐らくこれに影響の可能性が高い
  • 別途用意されている Cursor モードを有効にする後述の設定にしたら大体落ち着いた
    • UI が時々壊れたり以前に比べてコード編集が遅かったりとまだ不安定感は残っている
    • ただこれを超える大体はまだないのといつか改善される期待も込めて継続してメインにしている
  behaviour = {
    -- Copilot だと BAN 報告があるので未使用
    auto_suggestions = false,
    auto_apply_diff_after_generation = true,
    enable_cursor_planning_mode = true,
    enable_claude_text_editor_tool_mode = true,
     -- monorepo 環境でサブディレクトリをカレントにして neovim を起動しても
     -- AI の認識がリポジトリルート基点になり編集対象がズレて壊れる
     -- 僕の他の設定の影響かも知れないけど下記の設定でカレントがルートになり解消する
    use_cwd_as_project_root = true,
  },

CoplilotChat.nvim

  • コード編集には使っていない
  • コードに対する質問はこちらの方が見やすいので Neovim で編集中にエディタ切り替えずに質問したい時にたまに使っている
akinekoakineko

2025/06/08 の備忘録

現状

  • 使用ツールは以前の通り + Claude Code を使い始めたところ
  • ルールファイルの試行錯誤と AI 中心のワークフローが定まってきた
  • GitHub Copilot
    • まだコードインデックスが弱く @codebase とか入れても無視するコードが多い
    • 複数ルールファイルや Glob パターンによる適用など機能は充実してきた
    • 癖を理解すれば使っていけるが他ツールと比べると手間は多い
  • Windsurf
    • 相変わらずコードインデックスが強い
      • 今の Cursor と比べてどうかは試してないのでわからない
    • こちらも複数ルールファイル機能に対応したので快適度があがった
    • エディタ上でブラウザ起動して要素を指定できるのも良い
    • 恐らく OpenAI 買収による影響で Anthropic から Claude モデルの利用が停止
      • 対応の是非はともかく使えないのは厳しい
      • BYOK という自身で API キーを用意すれば使えるけど…
  • Claude Code
    • そろそろ試そうかというところで Pro プランで利用可能になったので試した
    • /init で生成される CLAUDE.md が非常に良い
      • AI 向けにプロジェクトの情報を簡潔にまとめるノウハウが凝縮された感じ
    • 指示に対して TODO が自動的に作られたり見やすい表示であったりと体験が非常に良い

今後の思うところ

  • Windsurf の継続に悩んでる
    • 体験の良いエディタでプラン内で金額を気にせず試行錯誤したいが出来なくなる
    • GitHub Copilot はまだ体験が悪い & 来る予定のリミットも気になる
      • ただ API として楽に且つ定額で Neovim 等から利用できるのは助かる
  • Claude Code の体験が良かったのと GUI 系のエディタと違ってシームレスに Neovim と行き来が出来るのは求めたものに近い
    • しばらくは Pro プランで様子見つつ将来的には1本化も考えてる
    • ただ異なるモデルの比較検証できるなにかは残したいので悩み中

Neovim + Claude Code プラグイン

https://syu-m-5151.hatenablog.com/entry/2025/06/05/134147
上記の記事でよりシームレスに連携できるプラグインを知ったので色々試してみました
基本的に思想が同じでその点でも凄く共感しましたw

  • https://github.com/greggh/claude-code.nvim
    • 前述の記事でも紹介されているプラグインで恐らく一番利用者が多そう
    • スクロールしても直ぐに最下部に戻されて履歴が見れない
      • 環境: WSL2 + Windows Terminal + tmux + neovim v.0.10.4
      • tmux なし、neovim の設定やプラグインも claude-code.nvim だけにしても解決せず
  • https://github.com/coder/claudecode.nvim
    • 前述の問題もあり利用できる状態ではなかったので見つけた代替
    • coder という開発をローカルからオンプレやクラウドなどのリモート中心にしようというコミュニティが開発している
    • pros
      • Claude Code の IDE API と連携しておりカレントバッファを認識する
        • greggh/claude-code.nvim の対応状況はわからないけど自分の環境では動かず
      • ESC x 2 を高速入力で vim のノーマルモードの操作ができる
        • ゆっくり ESC x 2 で Claude Code の履歴選択になる
      • ビジュアルモードと連携して選択行をコンテキストに送れる
    • cons
      • --resume--continue に対応していない
        • neovim を終了すると新規セッションとなる

--resume 出来ないのは残念だけど大きな問題ではないで coder/claudecode.nvim を利用してみている