はじめに
Neovimの軽快さとカスタマイズ性を維持しつつ、CursorのようなAI支援やモダンなUIを取り入れたいと考える開発者は多いのではないでしょうか。本記事では、AstroNvimとyetone/avante.nvimを組み合わせて、CursorライクなNeovim環境を構築する方法を紹介します。
Cursorの魅力とは?
Cursorは、AIとの連携や洗練されたUIにより、開発体験を向上させるエディタとして注目されています。特に以下の点が魅力です:
- AI支援:コードの補完やAgentモードなど、AIによる支援が充実しています。
- モダンなUI:フローティングウィンドウやコマンドパレットなど、直感的な操作が可能です。
- 統合されたワークフロー:Git連携やデバッグ機能など、開発に必要な機能が統合されています。
これらの特徴をNeovimで再現するために、AstroNvimとavante.nvimの組み合わせが有効です。
AstroNvimの導入と特徴
AstroNvimとは?
AstroNvimは、Neovimのディストリビューションの一つで、以下の特徴があります:
- 豊富なプラグイン:LSP、Telescope、Tree-sitterなど、多数のプラグインがプリインストールされています。
- 美しいUI:ステータスラインやタブラインなど、視認性の高いUIが提供されます。
- 拡張性:ユーザー独自の設定やプラグインの追加が容易です。
インストール手順
既存のNeovim設定のバックアップ:
既存の設定がある方は以下を参考にバックアップをとってください。 docs.astronvim.com
AstroNvimのテンプレートをクローン:
git clone --depth 1 https://github.com/AstroNvim/template ~/.config/nvim rm -rf ~/.config/nvim/.git nvim
インストール後、Neovimを起動すると、必要なプラグインが自動でインストールされます。
ファイル操作&検索の基本キーマッピング:
leader + ff でファイル検索:
Space + ff(<Leader> はデフォルトで <Space>)
を押すと Telescope の find_files が起動し、カレントディレクトリ以下のファイルを検索できます。
入力した文字列に一致する候補が即時に絞り込まれるので、ファイル名を数文字タイプして
leader + fw でワード検索:
Space + fw
は Telescope の live_grep を呼び出し、リポジトリ全体を対象にリアルタイムで文字列検索が可能です。
leader + e でファイルエクスプローラを開閉:
プロジェクトツリーを確認したいときは Space + e
で ファイルエクスプローラが表示されます。
再度同じキーを押すと閉じられるため、Telescope で検索した後でもワンキーでツリーに戻れます。
エクスプローラ内では a
で新規ファイル、d
で削除などのショートカットが用意されています。
avante.nvimとは?(CursorライクなUI)
avante.nvimの概要
avante.nvimは、NeovimをCursorのようなAI支援型IDEに変換するプラグインです。主な特徴は以下の通りです:
- AI支援:OpenAIなどのAPIを利用して、コードの補完や修正提案を行います。
- 直感的な操作:AIからの提案を適用可能です。
- 軽量なUI:Neovimのウィンドウを活用したシンプルなUIを提供します。
詳細は公式リポジトリをご参照ください。 github.com
AstroNvim + avante.nvim の統合手順
avante.nvimのインストール
AstroNvimはlazy.nvimをプラグインマネージャーとして使用しています。以下の手順でavante.nvimを追加します:
プラグイン設定ファイルを編集:
~/.config/nvim/lua/plugins/avante.luaを作成し、以下の内容を記述します:
return { { "yetone/avante.nvim", event = "VeryLazy", version = false, -- Never set this value to "*"! Never! opts = { -- add any opts here -- for example provider = "openai", openai = { endpoint = "https://api.openai.com/v1", model = "gpt-4o", -- your desired model (or use gpt-4o, etc.) timeout = 30000, -- Timeout in milliseconds, increase this for reasoning models temperature = 0, max_completion_tokens = 8192, -- Increase this to include reasoning tokens (for reasoning models) --reasoning_effort = "medium", -- low|medium|high, only used for reasoning models }, }, -- if you want to build from source then do `make BUILD_FROM_SOURCE=true` build = "make", -- build = "powershell -ExecutionPolicy Bypass -File Build.ps1 -BuildFromSource false" -- for windows dependencies = { "nvim-treesitter/nvim-treesitter", "stevearc/dressing.nvim", "nvim-lua/plenary.nvim", "MunifTanjim/nui.nvim", --- The below dependencies are optional, "echasnovski/mini.pick", -- for file_selector provider mini.pick "nvim-telescope/telescope.nvim", -- for file_selector provider telescope "hrsh7th/nvim-cmp", -- autocompletion for avante commands and mentions "ibhagwan/fzf-lua", -- for file_selector provider fzf "nvim-tree/nvim-web-devicons", -- or echasnovski/mini.icons "zbirenbaum/copilot.lua", -- for providers='copilot' { -- support for image pasting "HakonHarnes/img-clip.nvim", event = "VeryLazy", opts = { -- recommended settings default = { embed_image_as_base64 = false, prompt_for_file_name = false, drag_and_drop = { insert_mode = true, }, -- required for Windows users use_absolute_path = true, }, }, }, { -- Make sure to set this up properly if you have lazy=true 'MeanderingProgrammer/render-markdown.nvim', opts = { file_types = { "markdown", "Avante" }, }, ft = { "markdown", "Avante" }, }, }, } }
APIキーの設定:
export OPENAI_API_KEY="your_openai_api_key"
Neovimの再起動:
設定を反映させるために、Neovimを再起動し、~/.config/nvim/lua/plugins/avante.luaファイルを開いて編集します。
nvim ~/.config/nvim/lua/plugins/avante.lua
Space + aa
でavante.nvimのチャットパネルが表示されます。
チャットしてみる:
設定ファイルのモデルを変更する指示をしてみます。
a
もしくはA
で提案された変更が挿入されます。
最後にca
で変更をacceptします。
avante.nvimの便利なキーバインド:
avante.nvimでは、選択したコードブロックに対してAIによる編集や提案を行うためのキーバインドが用意されています。
選択範囲に対するAI操作
Space + a + e
: 選択したコードブロックをAIに送信し、編集提案を受け取ります。
Space + a + a
: サイドバーを表示し、AIとの対話を開始します。
これらのキーバインドを活用することで、選択したコードに対して迅速にAIの支援を受けることができます。
おまけ: おすすめのプラグイン
CursorライクなNeovim環境をさらに快適にするために、以下のプラグインを導入することをおすすめします。
folke/flash.nvim
検索ラベルや強化された文字移動、Treesitterとの統合により、コードナビゲーションを向上させるプラグインです。 github.com
kdheepak/lazygit.nvim
Neovim内からlazygitを呼び出すためのプラグインで、Git操作を効率化します。 github.com
Exafunction/windsurf.vim
Copilotの代替として有力な選択肢です。 筆者はまだ長期運用していませんが、導入も簡単なのでぜひ試してみてください。 github.com
github/copilot.vim
まとめ
AstroNvimとavante.nvimを組み合わせることで、Neovim上でCursorのようなAI支援型の開発環境を構築できます。Neovimの軽快さを維持しつつ、モダンな開発体験を求める方にとって、有力な選択肢となるでしょう。