NeovimでAIを使う4つの形 補完・チャット・エージェント
NeovimでAIを使う話は、たいていプラグインの名前から始まります。ただ実際に使い心地を決めているのはプラグインではなく、AIをエディタのどこに置くかのほうです。置き場所は大きく4つあり、どれを選ぶかで必要な設定も、AIが触れる範囲も変わります。この記事は4つを並べた見取り図で、それぞれの手順は担当の記事に渡します。
検証環境:NVIM v0.12.4とnightlyビルドのNVIM v0.13.0-dev-1430+g6eb36bcb2d(macOS)。標準のインライン補完については、0.12.4でvim.lsp.inline_completionが持つ関数と:helpの手順を確かめました。GitHub Copilotの契約とサインインが要る部分、つまり実際に候補が返ってくるところまでは確かめていません。外部の書き換えを拾うかどうかの比較は、両方のバージョンで実際にファイルを書き換えて測りました。
置き場所は4つある
まず全体です。上ほどエディタに近く、下へ行くほどAIの持ち場が広くなります。
| 置き場所 | 出てくるもの | 詳しい手順 |
|---|---|---|
| 補完として | 打っている先の続き | copilot.vimの設定 |
| エディタ内のチャット | 選んだ範囲についての会話 | avanteとCodeCompanion |
| 横に置いた端末 | ファイルを跨いだ書き換え | sidekick.nvim |
| エディタごと替える | 全部入り | AIエディタのVimモード |
補完として置く
いちばん軽い置き方です。打っている途中に続きが薄い文字で出て、受け入れれば挿入されます。ここで0.12から事情が変わりました。Neovim本体がLSPのtextDocument/inlineCompletionに対応したので、プラグイン無しでこの形が作れます。手元の0.12.4で確かめると、vim.lsp.inline_completionにはenable、get、select、is_enabledの4つが入っていました。
驚いたのは、:helpにGitHub Copilotを例にしたクイックスタートがそのまま載っていることです。lsp-copilotというタグが振られていて、手順は4段階でした。まず言語サーバを入れます。
npm install --global @github/copilot-language-server
次に設定を書いて有効にします。lsp/に置く形でも同じです。
vim.lsp.config('copilot', {
cmd = { 'copilot-language-server', '--stdio' },
root_markers = { '.git' },
})
vim.lsp.enable('copilot')
vim.lsp.inline_completion.enable()
あとはサインインして、候補を受け入れるキーにvim.lsp.inline_completion.getを割り当てます。nvim-lspconfigのCopilot用の設定には、LspAttachで言語サーバが対応しているかを確かめてから有効にし、Ctrl-fで受け入れ、Ctrl-gで候補を切り替える例が付いています。
ここまで書いておいて正直に添えると、実際に候補が返ってくるところまでは確かめていません。Copilotの契約とブラウザでのサインインが要るためです。確かめたのは、関数が0.12.4に実在すること、is_enabled()が既定でfalseを返すこと、そして手順が公式ヘルプに載っていることまでです。
従来のcopilot.vimが不要になったかというと、そうとも言えません。あちらはVimでも動きます。標準のインライン補完はNeovim 0.12以降の仕組みなので、VimとNeovimの両方で同じ設定を使いたい場合はcopilot.vimのほうが素直です。AIを使わない素の補完については標準自動補完の記事と標準入力補完の使い方があります。
エディタの中のチャットとして置く
2つめは、Neovimの中にチャットの窓を開く形です。範囲を選んで「ここを直して」と頼み、返ってきた差分を確認してから当てます。補完と違って会話が続くので、なぜそう直すのかを聞けます。
この領域の代表がavante.nvimとCodeCompanionで、同じ「チャットする」でも設計思想がかなり違います。差分の当て方と設定の重さをavante.nvimとCodeCompanionの違いで比べました。
横に置いた端末として使う
3つめが2026年に入って増えた形です。Claude CodeやCodexのようなコマンドラインのエージェントを端末で走らせ、Neovimはファイルを見る側に回ります。プラグインを介さないので、AIの側の更新にエディタの設定が振り回されません。
いちばん素朴なのは:terminalで開く方法で、これは:terminalの使い方とプラグイン無しでClaude CodeとCodexを使う記事にまとめてあります。端末の出し入れやNeovimとのやりとりを整えたいときはsidekick.nvimが使え、Claude Codeを常駐させる方法で扱いました。
この形にはひとつ落とし穴があります。エージェントはNeovimの外からファイルを書き換えるので、開いているバッファが古いままになります。実際にどうなるかを測りました。2行のファイルを開いた状態で、外から1行目を書き換えて2.5秒待ちます。キーは一切押していません。
| バージョン | 2.5秒後の画面 | :checktime のあと |
|---|---|---|
| 0.12.4 | 古いまま | 新しい内容 |
| 0.13 nightly | 新しい内容 | 新しい内容 |
0.12.4では画面が古い内容のまま止まり、:checktimeを打った瞬間に入れ替わりました。nightlyでは何も押さないうちに書き換わっています。0.13でautoreadがファイルシステムの監視を使うようになったためで、この変更はautoreadが外部の変更を自動で読み直す記事で扱いました。0.12以前を使うなら、エージェントに作業させたあとは:checktimeを打つか、:e!でファイルを読み直す癖をつけておくほうが安全です。
もうひとつ、エージェントを走らせている端末をうっかり閉じる事故もあります。0.13の:detach!はNeovim側の対策で、端末が落ちても本体を残せます。
エディタごと替える
4つめは、AIを内蔵したエディタに移ってVimのキー操作だけを持ち込む形です。CursorやZed、VSCodeにはVimモードがあり、再現度はそれぞれ違います。どこまで手が使えるかをAIエディタのVimモード比較で並べました。Neovimそのものを別のGUIから使う道もあり、そちらはVSCodeユーザーがVimに移行する方法で触れています。
選ぶ順番
4つを全部入れる必要はありません。順番に試すと、どこで足りるかが早く分かります。
- まず補完だけ入れます。0.12以降ならプラグイン無しで形になるので、設定の後戻りが小さくて済みます
- 「なぜこう書くのか」を聞きたい場面が増えたらチャットを足します
- 複数ファイルにまたがる作業が増えたら端末のエージェントに移します。この時点で
autoreadまわりを確かめます - それでも足りなければエディタごと替えます。ここまで来る人は多くありません
この4つを行き来してみて、いちばん効いたのは3つめでした。エディタの中にAIを入れると設定がどんどん重くなるのに対して、端末に置くとNeovimの側は素のままでいられます。ただ最初のころ、エージェントが直したはずのコードが画面に出てこなくて、AIが嘘をついたのだと思い込んでいた時期があります。原因は:checktimeを打っていなかっただけでした。0.13のnightlyに入れ替えてこれが自動になったとき、この置き方がようやく素直に使えるようになったと感じました。:helpにCopilotの手順が載っていたのも意外で、本体がここまで踏み込むとは思っていませんでした。
まとめ
NeovimでAIを使う形は4つに整理できます。打っている先を埋める補完、選んだ範囲について話すチャット、横に置いた端末で走るエージェント、そしてエディタごと替える方法です。0.12でLSPのインライン補完に対応したので、いちばん軽い補完はプラグイン無しで作れるようになりました。:helpにGitHub Copilotを使うクイックスタートが載っていて、そのまま写せます。端末のエージェントを選ぶときは、外から書き換えられたファイルを拾えるかを先に確かめてください。0.12.4では:checktimeを打つまで画面が古いままで、0.13のnightlyでは何も押さずに入れ替わりました。4つを全部そろえる必要は無く、補完から順に足していけば、自分がどこで足りるかは途中で分かります。