じゃあ、おうちで学べる

本能を呼び覚ますこのコードに、君は抗えるか

NeovimをCursorのように進化させる - yetone/avante.nvim の導入

もはやCopilotなしでは開発できない
Cursorが体験として革新的すぎる
Clineこそ俺達が求めていたものだ!
とにかく新世代のAIエディターが最高!

はじめに

開発者のタイムラインを開けば、そんな投稿で溢れかえっています。確かに、AIによる開発支援は革新的で、プログラミングの未来を感じさせるものです。特に最近では、単なるコード補完を超えて、より多機能なAIアシスタントとしての役割を担うツールが増えてきています。

実は、愛用のNeovimでもこうした最新のAI機能を導入できるんです。しかも、使い慣れたキーバインドプラグインはそのまま。今回はavante.nvimというプラグインを使って、NeovimをAIパワード開発環境へと進化させる方法をご紹介します。

github.com

このプラグインは、私たちvimmerにとって既に身近な存在であるcopilot.luaのような補完機能を超えて、より包括的なAI支援を実現します。コードの理解、リファクタリング、そして対話的なアシスタント機能まで、新世代のAIエディターが持つ機能をNeovimで実現できるのです。

これまでのvimmerは、copilot.luaのようなシンプルで効率的なコード補完ツールを活用してきました。しかし、新世代のAIエディターは、コードの解析、リファクタリングの提案、そしてより高度なコンテキスト理解を備えています。この進化に対して、私たちvimmerはどのように向き合うべきでしょうか?

でも、待ってください。私たち Vimmer はどうすれば...? 長年磨き上げてきたNeovimを捨てて、新しいエディターに移行しなければいけないのでしょうか?

いいえ、Neovimはもっと強くなれます。Neovimの最大の魅力は、その圧倒的なカスタマイズ性。それは単なるIDE統合開発環境)ではなく、PDE(Personal Development Environment:個人開発環境)とも呼べる存在です。

まるで自分だけの剣を鍛え上げていくように、エディターと共に成長していける。そんな独特の魅力がNeovimにはあります。私たちは常にNeovimを進化させ、新しい可能性を追求してきました。copilot.luaがその一例です。そして今、avante.nvimによって、さらなる進化の時が来ています。

Neovim 以外の話はこちらです。

laiso.hatenablog.com

avante.nvim とは

avante.nvimは、Cursor AI IDEの機能を模倣することを目的として開発されたNeovimプラグインです。AI駆動のコード提案機能を提供し、その提案を直接ソースファイルに適用できる機能を備えています。上記のカテゴリーでいうとコーディングエージェントに近いものになります。

デモ動画

Note: GitHub上にデモ動画がありますが、実際の動作の様子を簡単に説明させていただきます:

avante.nvimを使用すると、画面右側にAIアシスタントのサイドバーが表示され、現在開いているコードについて対話形式で質問や提案を行うことができます。コードの変更提案は差分形式で表示され、ワンクリックで適用することができます。まさにCursor AI IDEのような操作感を、Neovim上で実現しています。

実際の動作については、GitHubのリポジトリでも確認することができます。

特徴的な機能

  • AIによるコードアシスタント: 現在のコードファイルについてAIに質問し、インテリジェントな提案を受けることができます
  • ワンクリック適用: AIの提案をシンプルなコマンドで即座にソースコードに反映できます
  • 他の生成AIとの連携: デフォルトのClaudeに加え、ChatGPTやGitHub Copilotを活用したコード提案が可能です

セットアップ方法

lazy.nvimを使用した場合の設定例を紹介します。avante.nvimはデフォルトではCursorのように高度なAI機能を利用するように設定されていますが、他にもChatGPTやAzureなども指定できますが今回はより手軽に利用できるGitHub Copilotをプロバイダーとして設定します。

これにより、Copilotのライセンスさえあれば、追加のAPIキーの設定なしでAI支援機能を利用することができます。以下が具体的な設定例です。

{
  "yetone/avante.nvim",
  event = "VeryLazy",
  lazy = false,
  version = false,
  opts = {
    provider = "copilot",
    auto_suggestions_provider = "copilot",
    
    -- 動作設定
    behaviour = {
      auto_suggestions = false,
      auto_set_highlight_group = true,
      auto_set_keymaps = true,
      auto_apply_diff_after_generation = false,
      support_paste_from_clipboard = false,
      minimize_diff = true,
    },

    -- ウィンドウ設定
    windows = {
      position = "right",  -- サイドバーの位置
      wrap = true,        -- テキストの折り返し
      width = 30,         -- サイドバーの幅
      -- その他の詳細設定は省略
    },
  },
  -- 依存関係の設定
  dependencies = {
    -- 必須の依存関係
    "stevearc/dressing.nvim",
    "nvim-lua/plenary.nvim",
    "MunifTanjim/nui.nvim",
    -- オプションの依存関係
    "hrsh7th/nvim-cmp",
    "nvim-tree/nvim-web-devicons",
    "zbirenbaum/copilot.lua",
    -- その他の拡張機能
  }
}

私の設定はこちらです。 github.com

主要なキーマッピング

デフォルトで以下のキーマッピングが利用可能です。主にこちらから利用していきます。

  • <Leader>aa: サイドバーの表示
  • <Leader>ar: サイドバーの更新
  • <Leader>af: サイドバーのフォーカス切り替え
  • <Leader>ae: 選択したブロックの編集

他ブログでのavante.nvimの紹介

zenn.dev

まとめ

開発者の間で「AIエディターこそが主流」という声が広がっていますが、Vimmerは愛用のNeovimを手放す必要はありません。avante.nvimの導入により、Neovimの使い慣れた操作性を維持したまま、最新のAI支援機能を活用することが可能です。特筆すべき点として、GitHub Copilotをプロバイダーとして使用することで、追加のAPIキー設定なしで高度な機能を利用できます。また、洗練されたサイドバーUIにより自然な開発ワークフローを実現し、<Leader>aaなどのシンプルなキーマッピングで直感的な操作を可能にします。

Neovimの最大の魅力である圧倒的なカスタマイズ性を活かしながら、このプラグインを通じてAIパワード開発環境へと進化させることができます。プラグインは現在も活発に開発が継続されており、今後さらなる機能追加が期待できます。PDEとしてのNeovimの魅力を保ちながら、最新のAI支援機能を活用したいVimmerにぜひお勧めのプラグインです。

最後に一言。「おい、お前、それは本当にvimmerか?」という声が聞こえてきそうです。しかし、私たちvimmerは常に進化を続けています。新しい技術を取り入れながらも、Vimの哲学と向き合い続けることもまた、vimmerの在り方の一つなのではないでしょうか。