# NvChad盆栽をし続けて思った、NvChadのメリデメについて



どうもこんにちは。おとかです。

最近脱ディストリしようと思い、NvChadを使わずに0からneovimの環境構築に挑んでみました。
色々neovimの設定をいじってて改めて思ったのは、NvChadってものすごい完成されているベースであることにふと気づいたわけです。

今回は、そんなNvChadのメリットやデメリットについてまとめていきたいと思います

## メリット
### メリットその1: 最初から便利なマッピングや機能が豊富
NvChadには、VSCodeのように使える基本セットを提供することを目的としています。
そのため、最初から便利なマッピングや機能が多数提供されています。

ただ、基本的にはvimのコアの機能をなるべく潰さないようにして提供しているため、マッピングしらなくても快適に操作できるようになっています。
また、ショートカットキーを使う以外にも、コマンドで機能を呼び出すこともできるため、特段苦戦することはないでしょう。

### メリットその2: 起動速度が早い
NvChadは、packerを使用してプラグインを管理しています。
packerを使ったことある人なら、どうやって高速化するのか疑問に思っている方もいるでしょう。

NvChadでは、この問題を解決するためのlazy_loadの機能を独自に提供してくれています。

https://github.com/NvChad/NvChad/blob/main/lua/core/lazy_load.lua

NvChadでは、最初から独自に入れてある95%以上のプラグインはlazy_loadされています。
そのため、起動速度もめっちゃ色々な機能入っている割に物凄く早いです！

また、ユーザーは、独自で追加したプラグインに対して簡単にlazy_loadを適応することができるので、ガツガツ入れたとしても100ms以下を安定させられることでしょう。

packerで導入したプラグインを、難しい設定抜きでlazy_loadを利用したい方にも、NvChadはおすすめのディストリビューションと言えるでしょう。

### メリットその3: カスタマイズがしやすい
基本的に、最初から全部入りのディストリビューション系のneovimは、カスタマイズがしづらいイメージを持っている方も多くいると思います。
NvChadでは、簡単にカスタマイズができるようにすることも目標としています。

参考までに、私のNvChadのcustomをここで紹介します。

https://github.com/garchomp-game/NvChadCustom

```
.
├── chadrc.lua
├── init.lua
├── mappings
│   └── init.lua
├── plugins
│   ├── configs
│   │   ├── cmp.lua
│   │   ├── lspconfig.lua
│   │   └── nvim-gtd.lua
│   ├── init.lua
│   ├── override
│   │   ├── mason-setup.lua
│   │   ├── statusline.lua
│   │   └── treesitter-setup.lua
│   ├── override.lua
│   └── removeCorePlugins.lua
├── script
│   └── init.lua
└── ui
    └── init.lua
```

|ファイル名                   |説明                                                    |
|-----------------------------|--------------------------------------------------------|
|chadrc.lua                   |ルーティングファイル                                    |
|plugins/init.lua             |プラグインの定義やconfigファイルの場所、起動順の指定など|
|plugins/configs/~            |各プラグインの設定等                                    |
|plugins/override.lua         |NvChadのpluginのオーバーライド等                        |
|plugins/removeCorePlugins.lua|元々NvChadが用意していたプラグインの内いらないものの定義|
|mappings/init.lua            |基本的にマッピングの定義はここで行う                    |
|ui/init.lua                  |uiの変更等。                                            |

## デメリット
### デメリットその1: 便利すぎるがゆえ仕組みがわからないままになりがち
NvChadでは、基本的に簡単にプラグインの追加、削除、その他設定の変更ができるようになっています。
そのため、そもそもneovimがどのように動いているのかがわからなくても使えるようになっています。

結果、NvChadが使えない環境でneovimの設定をするとなった時、動かなかった原因を突き止めるのに非常に時間がかかってしまうことに繋がるでしょう。

### デメリットその2: 一部のプラグインを無効化にするのは結構大変
たとえば、NvChadのプラグインの一つに、NvChad/uiというものがあります。
これを例えば無効化したくなったとした場合、NvChad/uiと依存関係にあるプラグインも無効化しなければいけなくなったりと、結構めんどくさいことになります。

基本的にNvChadのコア機能は、密結合な関係にあります。そのため、部分的に無効化する場合は、元々のプラグインの設定をオーバーライドし、その上で元の設定のコードを書いた上で、そこから変更すると言っ た作業が必要になります。

## 結論: IDEライクに使いたい人にはかなりおすすめのディストリビューション
vimのコアの機能もしっかり使い倒しつつ、便利な機能はどんどん使いたい現代っ子な人には非常におすすめのディストリビューションの一つだと自分は考えています。

現在、NvChadのコミッターは137人在籍しているみたいなのと、(2022/12/29日現在)現在もなお活発にコミットがされているので、安心して使うことができるでしょう。

packerやmason、treesitterの導入や設定に面倒さを感じている方や、便利なマッピングや機能がデフォルトから入っている高機能なエディタを使ってみたいと思った方は、是非一度チャレンジしてみてはいかがでしょうか？

ちなみに筆者は、現在eclipseとほぼ同じようなことをNvChad上で実現する試みをしています。

もしSpring Bootの開発をしている方がいましたら、先程も紹介しました、現在私が使用しているcustom設定を使ってみてはいかがでしょう？

https://github.com/garchomp-game/NvChadCustom