avante.nvimのメモ
Posted:
avante.neovimのメモ
2025年はAI IDEが流行っている。VSCodeのAI IDEは有名だが、neovimでもAI IDEを行うことができる。そのために、avante.neovimを使う。
インストール
avante.nvimのオフィシャルサイトの手順に従ってインストールする。
ここにあるように設定を入れる
私はrafiのnvim設定を用いているので ~/.config/nvim/lua/plugins/avante.lua を作成して、冒頭に return を追記して動作した
現在は ~/.config/nvim/lua/plugins/avante.lua に設定を置いている。
provider は gemini、input provider は snacks にしている。
Avante は Lua 部分だけでなく avante_templates、avante_tokenizers、avante_repo_map、avante_html2md などの native module も使う。
そのため、プラグインがロードできるだけでは十分ではなく、build/*.so があるかまで確認する。
make -C ~/.local/share/nvim/lazy/avante.nvim
2026-05-29 に確認した時点では、build 前は require("avante") は通るが native module が読めない状態だった。
make 実行後、次が作られた。
~/.local/share/nvim/lazy/avante.nvim/build/avante_html2md.so
~/.local/share/nvim/lazy/avante.nvim/build/avante_repo_map.so
~/.local/share/nvim/lazy/avante.nvim/build/avante_templates.so
~/.local/share/nvim/lazy/avante.nvim/build/avante_tokenizers.so
テスト
Neovim の plugin 設定は、実 UI を開く前に headless で最低限テストする。
nvim --headless '+lua local lazy=require("lazy"); local C=require("lazy.core.config"); local p=C.plugins["avante.nvim"]; print("avante_spec=" .. tostring(p ~= nil)); if p then print("avante_enabled=" .. tostring(p.enabled ~= false)); print("avante_lazy=" .. tostring(p.lazy)); end; lazy.load({ plugins = { "avante.nvim" }, wait = true }); local ok, avante = pcall(require, "avante"); print("avante_require=" .. tostring(ok)); if not ok then print("avante_error=" .. tostring(avante)); end; print("AvanteAsk_cmd=" .. tostring(vim.fn.exists(":AvanteAsk"))); local opts = LazyVim.opts("avante.nvim"); print("avante_provider=" .. tostring(opts.provider)); print("avante_input_provider=" .. tostring(opts.input and opts.input.provider)); vim.cmd("qa")'
期待値は次の通り。
avante_spec=true
avante_enabled=true
avante_lazy=true
avante_require=true
AvanteAsk_cmd=2
avante_provider=gemini
avante_input_provider=snacks
native module まで確認する場合は、headless では VeryLazy 相当の autocmd を発火させてから確認する。
nvim --headless '+lua require("lazy").load({ plugins = { "avante.nvim" }, wait = true }); vim.api.nvim_exec_autocmds("User", { pattern = "VeryLazy" }); for _,name in ipairs({"avante_tokenizers","avante_templates","avante_repo_map","avante_html2md"}) do local ok, mod = pcall(require, name); print(name .. " ok=" .. tostring(ok) .. " type=" .. type(mod)); end; print("templates_available=" .. tostring(require("avante.path").available())); vim.cmd("qa")'
期待値は次の通り。
avante_tokenizers ok=true type=table
avante_templates ok=true type=table
avante_repo_map ok=true type=table
avante_html2md ok=true type=table
templates_available=true
health check も確認する。
nvim --headless '+Lazy! load avante.nvim' '+checkhealth avante' '+silent write! /tmp/nvim-avante-health.txt' '+qa'
2026-05-29 時点では、plenary.nvim、nui.nvim、icons plugin、snacks.nvim input provider、TreeSitter parser/highlighter は OK だった。
使い方
起動 : <leader> + a + a でAIが起動する。AIが起動すると、AIがコードを書いてくれる。
コマンド
| コマンド | 説明 | 例 |
|---|---|---|
:AvanteAsk [question] [position] | コードについてAIに質問します。オプションのpositionはウィンドウの位置を設定し、askは直接質問モードを有効/無効にします。 | :AvanteAsk position=right Refactor this code here |
:AvanteBuild | プロジェクトの依存関係をビルドします。 | |
:AvanteChat | コードベースについてAIとのチャットセッションを開始します。デフォルトはask=falseです。 | |
:AvanteChatNew | 新しいチャットセッションを開始します。現在のチャットはチャットセッションセレクターで再度開くことができます。 | |
:AvanteHistory | 以前のチャットセッションのピッカーを開きます。 | |
:AvanteClear | 現在のチャットセッションのチャット履歴をクリアします。 | |
:AvanteEdit | 選択したコードブロックを編集します。 | |
:AvanteFocus | サイドバーとのフォーカスを切り替えます。 | |
:AvanteRefresh | すべてのAvanteウィンドウを更新します。 | |
:AvanteStop | 現在のAIリクエストを停止します。 | |
:AvanteSwitchProvider | AIプロバイダー(例: openai)を切り替えます。 | |
:AvanteShowRepoMap | プロジェクトの構造のリポジトリマップを表示します。 | |
:AvanteToggle | Avanteサイドバーを切り替えます。 | |
:AvanteModels | モデルリストを表示します。 | |
:AvanteSwitchSelectorProvider | Avanteセレクタープロバイダー(例: native, telescope, fzf_lua, mini_pick, snacks)を切り替えます。 |