3年ぶりに neovim の設定を刷新してみた

## はじめに

neovim の設定を3年以上サボっていたので、久しぶりに整理しました。
バージョンが古くなっていたり、新しくリニューアルされたプラグインがあったので、更新ついでに改めてプラグインの使い方をおさらいしてみました。

https://github.com/tamago3keran/dotfiles

そして、新しく購入した MacBook のローカル環境を汚したくなかったので、コンテナイメージを Docker Hub にアップロードして、開発に利用しています。

https://hub.docker.com/r/tamago3keran/dotfiles

プラグインの紹介を見るよりも使ってみたいという方がいれば、ぜひプルしてみてください。

## 環境
- **Chip**: Apple M2
- **macOS**: Ventura 13.2.1
- **neovim**: v0.8.2

## Package Manager
### Shougo/dein.vim
自分が長らく愛用している [Shougo](https://github.com/Shougo) さん作のパッケージマネージャーです。

https://github.com/Shougo/dein.vim

## Fuzzy Finder
### Shougo/ddu.vim
以前使用していたファジーファインダープラグインである `denite.nvim` の後継プラグインです。

https://github.com/Shougo/ddu.vim

`ddu.nvim` を拡張するプラグインが複数存在し、それらもインストールすることで以下のようなことが可能になります。

- ディレクトリ構造をツリー上に表示
- 特定の文字列をタイトルに含むファイルを再帰的に検索
- 特定の文字列が存在するファイルの行を検索

|file listing|file_rec|code grep|
|:--:|:--:|:--:|
|![Screenshot 2023-03-21 at 18.11.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186009/020c8c36-86d0-8fc4-06bb-8815b7164a88.png)|![Screenshot 2023-03-21 at 18.11.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186009/4b256ad5-38a2-a32f-0c02-cfc500384690.png)|![Screenshot 2023-03-21 at 18.12.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186009/c8081d3b-9f66-d1be-1b86-109172bb5fbc.png)|

詳しい説明に関しては、開発者本人が記事を書かれていますので、そちらをご覧ください。

https://zenn.dev/shougo/articles/ddu-vim-beta

## Auto Completion
### Shougo/ddc.vim
以前使用していた自動補完プラグインである `deoplete.nvim` の後継プラグインです。

https://github.com/Shougo/ddc.vim

`ddc.nvim` を拡張するプラグインが複数存在し、それらもインストールすることで以下のようなことが可能になります。

- 現在操作中のバッファー内に書かれているコードから文字列を補完する
- LSP から提供される情報をもとに文字列を補完する

|around completion|LSP completion|
|:--:|:--:|
|![Screenshot 2023-03-21 at 18.30.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186009/04a21f1c-c3b7-a945-30d7-7b8f00085632.png)|![Screenshot 2023-03-21 at 18.30.00 copy.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186009/5553bd30-3723-f370-9a76-ad7d4ead357e.png)|

詳しい説明に関しては、開発者本人が記事を書かれていますので、そちらをご覧ください。

https://zenn.dev/shougo/articles/ddc-vim-beta

### windwp/nvim-autopairs
括弧やクォーテーションなどを自動で閉じてくれるプラグインです。
括弧が多い場合に、閉じ括弧の数が足りてなくてシンタックスエラーになるのを防げます。

https://github.com/windwp/nvim-autopairs

## Ecosystem
### vim-denops/denops.vim
上記で説明した `ddu.vim` や `ddc.vim` は、 README にもあるように `denops.vim` を導入している必要があるため、インストールしています。

https://github.com/vim-denops/denops.vim

## Visual
### EdenEast/nightfox.nvim
スター数が 2k を超えるカラースキーム系のライブラリです。

https://github.com/EdenEast/nightfox.nvim

様々な種類のスキームがありますが、目に優しそうな `Nightfox` が気に入っています。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186009/12be148a-29df-0b75-f0fb-50ca90de6368.png" width=600px>

### feline-nvim/feline.nvim
ステータスラインのカスタマイズを助けてくれるプラグインです。

https://github.com/famiu/feline.nvim

ステータスラインをカスタマイズすると一気に華やかになりますね。

![Screenshot 2023-03-21 at 19.18.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186009/df748774-b51a-1d22-1ed1-56bfa37dbb11.png)

### nanozuki/tabby.nvim
タブラインのカスタマイズを助けてくれるプラグインです。

https://github.com/nanozuki/tabby.nvim

画面を縦分割している場合は、右上を見るとそれぞれ何のファイルを開いているか分かります。
また複数タブを開いている場合は、左上を見ると何個目のタブを開いているかがわかります。

![Screenshot 2023-03-21 at 19.20.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186009/687affed-acc0-e0b9-a24b-f949ff6bdfd3.png)

### mhinz/vim-startify
neovim を開いたときに最初に表示される画面を編集できるプラグインです。

https://github.com/mhinz/vim-startify

最初に開く画面で開発テンションを上げたいので、自分で ASCII art を書きました。

<img src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186009/0bedc786-15e9-339c-9305-54b330b4c222.png' width=600px>

### nvim-tree/nvim-web-devicons
ステータスラインやタブラインでアイコンを表示するために、導入しているプラグインです。

https://github.com/nvim-tree/nvim-web-devicons

### Shougo/pum.vim
[Shougo](https://github.com/Shougo) さん作の独自補完ウィンドウのプラグインです。

> pum.vim はネイティブで用意されている補完機能を使用せずに、自前で Vim の popup window 機能や floating window 機能を用いて補完を行うプラグインです。
>
> 引用元: https://zenn.dev/shougo/articles/ddc-vim-pum-vim

https://github.com/Shougo/pum.vim

ネイティブ依存ではなく、独自のウィンドウを使用することで様々なメリットがあるみたいですね。
本人が記事をまとめてくださっているので、そちらをご覧ください。

https://zenn.dev/shougo/articles/ddc-vim-pum-vim

## Git
### lewis6991/gitsigns.nvim
neovim 上で Git の操作ができるプラグインです。

https://github.com/lewis6991/gitsigns.nvim

このプラグインを導入することで、以下のようなことができます。

- 修正のあるところまでコードジャンプできる
- 特定の追加・削除・変更されたコードを修正前に戻せる
- neovim 操作中に `git blame` を見れる

## LSP
### neovim/nvim-lspconfig
neovim で素早く Language Server Protocol の使用を可能にしてくれるプラグインです。

https://github.com/neovim/nvim-lspconfig


## AI
### github/copilot.vim
"AI pair programmer" である `GitHub Copilot` を neovim でも使用できるようにしてくれるプラグインです。

https://github.com/github/copilot.vim


## Clipboard
### ojroques/nvim-osc52
自分は Docker を使用するので、 yank した内容をホストのクリップボードにも反映させないといけません。そのために入れているプラグインです。

https://github.com/ojroques/nvim-osc52

## おわりに

自分は Shougo さんが作成する Dark powered plugin シリーズが大好きなので、 Deno のパワーも取り入れて新しくなったプラグインを見て、テンションが上がりました。

より効率よく開発できるようにするには、他にもプラグインがあると良さそうなので、ここからまたアップデートしていこうと思います。