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