SPIDERPLUS Tech Blog

建設SaaS「スパイダープラス」のエンジニアとデザイナーのブログ

NeovimでNvChad×Copilotを試す

1. はじめに

こんにちは、DevOpsチームの宮囿です。

 

弊社のDevOpsチームはあまりコーディングをする部署ではないんですが、必要に駆られてたまにコーディングもします。

私はVSCode+Copilotプラグインでなんとなく書いていたんですが、ターミナル上で作業を完結させたいという思いが募り、この度 Neovim※1+NvChad※2+Copilotの環境に移行することにしました。

その際、簡単に動作確認する環境を組んだのでその紹介をします。

 

※1 Neovim:vimの派生エディタ。拡張性と使いやすさが向上しているとのこと。

※2 NvChad:Neovimの使いやすい設定セットのようなもの。本田さんに教えてもらいました。

2. 対象読者

  • VSCodeちょっと飽きちゃってNeovimに興味が出てきている方
  • サーバー作業ではVim使ってるけどコーディングの為の設定を詰めるのが面倒でコーディング時にはVSCodeを使ってる方(私)

3. 環境構築

今回、お試しで触るだけなのでdockerで環境を準備することにしました。

dockerが利用でき、nerdfontが表示できる環境でお試しください。

3.1. nvim+nvchadのdocker立ち上げ準備

https://nvchad.com/docs/quickstart/install にdockerで動かすためのコマンドが書いてあるので、最後のnvimを起動するコマンドをshに変更して利用します。copilot.luaを適用するのにnvimの再起動が必要なためです。

docker run -w /root -it --rm alpine:latest sh -uelic '
  apk add git nodejs neovim ripgrep build-base wget --update
  git clone https://github.com/NvChad/starter ~/.config/nvim
  sh
  '

3.2. nvim起動

1の起動後、

$ nvim

を実行します。 初回起動時、lazy.nvimの画面が立ち上がりますので、完了したらqで閉じます。

もうかっこいいですね

3.3. copilot.luaの追加

space→f→aでtelescopeのファイル検索を開き、.config/nvim/lua/plugins/init.luaを開きます。

fuzzy-finderがデフォルトで入ってて最高

※最小構成なのでluaのLSPがない旨のエラー出てます

開いたら、プラグインとして以下を追加します。

{
  "zbirenbaum/copilot.lua",
  cmd = "Copilot",
  event = "InsertEnter",
  config = function()
    require("copilot").setup({})
  end,
},

3.4. Lazy sync実行

nvim上で

:Lazy sync

を実行し、copilot.luaをインストールします。

3.5. nvimを開きなおし、Copilotの認証

nvimを一度閉じて開きなおし、

:Copilot auth

でCopilotの認証を行います。

リンク先でコードを入力して認証を済ませると数秒でポップアップが消えます。 以上でCopilot.luaが利用できるようになります。

3.6. 試用

NvChadの利用について

space→c→hでチートシートが表示されるので、それを参考に操作します。困ったらチートシートを表示させて確認できます。

まずspace→t→hでテーマを自分好みにしてから試用を開始すると楽しいはずです。

Copilotの利用について

Alt+[でサジェスト表示、Alt+lで決定ができます。

その他のホットキーについては copilot.luaのgithubのdefault configurationから確認できます。

Copilotで作ってNeovimのターミナルで実行する様子

4. まとめ

これまでNeovimの設定を練るのが面倒そうで敬遠していたんですが、無事デビューすることができました。

Copilot.luaだけだと少し使いにくいのでもう少し工夫する必要がありそうですね。本記事を作成するにあたって、dockerでエディタを用意するのも少し楽しかったので、拡張してそのまま使える環境もちょっと作ってみたい気持ちです。

最後に

スパイダープラスでは仲間を募集中です。ちょっと興味が出てきたな、とか、もっといい方法あるのにな、と思った方は是非お話しましょう!