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 に設定を置いている。
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 実行後、次が作られた(build/ ではなく lua/ 配下に生成される)。
~/.local/share/nvim/lazy/avante.nvim/lua/avante_html2md.so
~/.local/share/nvim/lazy/avante.nvim/lua/avante_repo_map.so
~/.local/share/nvim/lazy/avante.nvim/lua/avante_templates.so
~/.local/share/nvim/lazy/avante.nvim/lua/avante_tokenizers.so
CARGO_HOME が書き込み不可のシステムディレクトリに設定されている場合、make が権限エラーで失敗する。
その場合は環境変数を上書きして実行する。
CARGO_HOME=~/.cargo make -C ~/.local/share/nvim/lazy/avante.nvim
lazy.nvim の build にも同様に指定しておくと、:Lazy build avante.nvim 時も同じ設定で動く。
build = function()
if vim.fn.has("win32") == 1 then
return "powershell -ExecutionPolicy Bypass -File Build.ps1 -BuildFromSource false"
else
return "CARGO_HOME=~/.cargo make"
end
end,
AWS Bedrock をプロバイダーに使う
avante.nvim は AWS Bedrock をプロバイダーとして使える。
認証方法
Bedrock プロバイダーは以下の認証方法に対応している。
| 方法 | 設定 |
|---|---|
| 環境変数 | BEDROCK_KEYS="aws_access_key_id,aws_secret_access_key,aws_region" |
| AWS デフォルトチェーン | ~/.aws/credentials、IAMロール、SSO など |
| Bearer Token | AWS_BEARER_TOKEN_BEDROCK 環境変数 |
AWS SSO を使う場合は aws_profile を指定する。
providers = {
bedrock = {
model = "jp.anthropic.claude-sonnet-4-6",
aws_profile = "your-sso-profile",
aws_region = "ap-northeast-1",
timeout = 60000,
},
},
AWS CLI が必須なので、aws コマンドが PATH に通っていることを確認する。
SSO の有効期限が切れたら aws sso login --profile your-sso-profile で再認証する。
モデル ID は推論プロファイルを使う
新しい Claude モデル(Sonnet 4 系以降)はオンデマンドの直接呼び出し(anthropic.claude-*)が使えない。
代わりにクロスリージョン推論プロファイルの ID を指定する。
# NG: オンデマンド直接呼び出し(400エラー)
anthropic.claude-sonnet-4-6
# OK: 推論プロファイル
jp.anthropic.claude-sonnet-4-6 # 日本リージョン経由
apac.anthropic.claude-sonnet-4-6 # アジアパシフィック経由
global.anthropic.claude-sonnet-4-6 # グローバル
利用可能な推論プロファイルは次のコマンドで確認できる。
aws bedrock list-inference-profiles --region ap-northeast-1 \
--query 'inferenceProfileSummaries[].inferenceProfileId' --output table
廃止された設定
web_search_engine.provider は廃止されている。設定に含まれていると起動時に警告が出るので削除する。
-- 削除する
web_search_engine = {
provider = "google",
},
テスト
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)を切り替えます。 |