🤖

NeovimでcopilotによるTab補完をするために設定したこと

に公開

はじめに

Neovimにavante.nvimをインストールしたが、VSCodeのGitHub Copilotのようにコードを書きながらAIによる補完が表示されない問題が発生した。いろいろ調べた結果、VSCodeと同じような開発体験を得ることができたので、その手順をメモとして残す。

環境

  • editor: Neovim v0.10.3
  • plugin manager: Lazy.vim

調べたこと

「neovim copilot tab」などのキーワードでGoogle検索を行った。その結果、copilot.vimというプラグインでNeovimでもGitHub Copilotを利用できることが分かった。

さらに、copilot.luaという別のプラグインはavante.nvimのdependenciesで指定していたが、これはcopilot.nvimをLuaで書き直したもので、設定が可能であることも分かった。そこで、copilot.luaの設定を調べてみた。

解決方法

copilot.luaのプラグイン設定が足りていなかったので、新たに設定ファイルを作成した。

ファイル構成

$ tree nvim/lua
nvim/lua
├── config
│   ├── autocmds.lua
│   ├── keymaps.lua
│   ├── lazy.lua
│   └── options.lua
└── plugins
    ├── avante.lua
    ├── colorscheme.lua
    ├── copilot.lua <-- 新規作成
    ├── fzf-lua.lua
    ├── git-conflict.lua
    ├── mason.lua
    └── mini-surround.lua

copilot.luaの設定

# copilot.lua
return {
 "zbirenbaum/copilot.lua",
 cmd = "Copilot", -- :Copilotコマンドが実行されたときにプラグインを読み込む
 build = ":Copilot auth", -- プラグインロード後左記のコマンドを実行
 event = "BufReadPost", -- ファイルが読み込まれた後にプラグインをロード. https://vim-jp.org/vimdoc-ja/autocmd.html
 config = function()
  require("copilot").setup({
   suggestion = {
    auto_trigger = true,
    keymap = {
     accept = "<Tab>", -- Tab で提案を受け入れる
    },
   },
  })
 end,
}

解説

自分の環境でAI補完が表示されなかった原因は、copilot.luaのデフォルト設定が auto_trigger = false だったため。これをtrueに設定することで、挿入モードに入ると自動的に補完が表示されるようになった。

参考
https://github.com/zbirenbaum/copilot.lua?tab=readme-ov-file#suggestion

When auto_trigger is true, copilot starts suggesting as soon as you enter insert mode. When auto_trigger is false, use the next, prev or accept keymap to trigger copilot suggestion.

そりゃ、表示されないわけだ。

ということで、auto_triggerをtrueに設定。

これで、AI補完が表示されるようになり、さらにVSCodeのCopilotと同じようにTabキーで補完を選択できるようにkeymapを設定。デフォルトではaccept = "<M-l>"(Alt + l)が設定されていたが、これをTabキーに変更した。

まとめ

copilot.luaの設定を変更することで、NeovimでもVSCodeのGitHub Copilotと同様にAI補完が動作するようになり、コーディング体験が向上した。これでより効率的にAIを活用したコーディングが可能になった。

Discussion