Neovimのセットアップ方法(Mac)

## 「Neovim」とは？

Vimをベースとしたテキストエディタです。
Vimの機能を損なうことなく、Vimが持っている全ての問題を修正するとのことです。

Vimの勉強会に参加したとき、登壇された方が使っていたので私も使ってみることにしました。

## 環境

- OS：macOS Mojave 10.14.6
- Neovim：0.4.2

## セットアップ

### インストール

Homebrewからインストールします。

```shell-session
$ brew install neovim
```

### バージョンの確認

インストールできたかどうか、バージョンを確認してみます。

```shell-session
$ nvim --version
NVIM v0.4.2
Build type: Release
LuaJIT 2.0.5
Compilation: /usr/local/Homebrew/Library/Homebrew/shims/mac/super/clang -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -DNDEBUG -DMIN_LOG_LEVEL=3 -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-prototypes -std=gnu99 -Wshadow -Wconversion -Wmissing-prototypes -Wimplicit-fallthrough -Wvla -fstack-protector-strong -fdiagnostics-color=auto -DINCLUDE_GENERATED_DECLARATIONS -D_GNU_SOURCE -DNVIM_MSGPACK_HAS_FLOAT32 -DNVIM_UNIBI_HAS_VAR_FROM -I/tmp/neovim-20190916-88369-176iaxs/neovim-0.4.2/build/config -I/tmp/neovim-20190916-88369-176iaxs/neovim-0.4.2/src -I/usr/local/include -I/tmp/neovim-20190916-88369-176iaxs/neovim-0.4.2/deps-build/include -I/usr/local/opt/gettext/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include -I/tmp/neovim-20190916-88369-176iaxs/neovim-0.4.2/build/src/nvim/auto -I/tmp/neovim-20190916-88369-176iaxs/neovim-0.4.2/build/include
Compiled by brew@Mojave-2.local

Features: +acl +iconv +tui
See ":help feature-compile"

      システム vimrc: "$VIM/sysinit.vim"
       省略時の $VIM: "/usr/local/Cellar/neovim/0.4.2/share/nvim"

Run :checkhealth for more info
```

バージョンが表示されているため、インストールに成功しています。

### 設定ファイルの作成

Vimの設定をNeovimにも反映します。
Vimで特に設定していない場合、この手順は不要です。

設定ファイルパスが `~/.vimrc` → `~/.config/nvim/init.vim` に変わりました。
基本的にはVimの設定ファイルがそのまま使えるため、コピーしてリネームするだけで使えます。

ただ、コピーすると設定の変更時にVimとNeovimの両方を修正する必要があるので、シンボリックリンクを貼るのがオススメです。
※すでに設定ファイルが存在する場合、シンボリックリンクで上書きしてしまうのでご注意ください。

```shell-session
$ mkdir ~/.config
$ mkdir ~/.config/nvim
$ ln -fns ${元となる.vimrcのフォルダパス}/.vimrc ~/.vimrc
$ ln -fns ${元となる.vimrcのフォルダパス}/.vimrc ~/.config/nvim/init.vim
```

設定ファイルを作成したら、Neovimを起動してみます。

```shell-session
$ nvim
```

これでエラーなく起動したらセットアップに成功です！

私の環境ではいくつかエラーが発生したので対応します。

### Neovimで使えない設定の削除

以下の設定はNeovimで廃止されたので削除します。

```diff_vim_l:.vimrc
- :set ttymouse=xterm2
```

Vimでは `xterm2` がデフォルトであり、VimとNeovimで極力分岐を作りたくなかったため、設定ごと削除しました。

### Pythonのパスを指定

[deoplete.nvim](https://github.com/Shougo/deoplete.nvim)をインストールして起動したところ、以下のエラーが発生しました。

```
[deoplete] deoplete requires Python3 support("+python3").
```

Neovimでは違うPythonを見ているようなので、パスを明示的に指定します。

```diff_vim_l:.vimrc
+ let g:python_host_prog = system('(type pyenv &>/dev/null && echo -n "$(pyenv root)/versions/$(pyenv global | grep python2)/bin/python") || echo -n $(which python2)')
+ let g:python3_host_prog = system('(type pyenv &>/dev/null && echo -n "$(pyenv root)/versions/$(pyenv global | grep python3)/bin/python") || echo -n $(which python3)')
```

私はpyenv-virtualenvで管理しているPythonを見るようにしました。

`:echo has('python3')` で `1` が返ればOKです。

### キャッシュの削除

私はプラグイン管理ツールにdeinを使っています。
カラースキームが読み込まれなかったので、ランタイムパスのキャッシュを削除しました。

```vim
:call dein#recache_runtimepath()
```

こちらはVimでも発生していたので、おそらく私の設定がよくないです。

## おわりに

これで念願のNeovimをセットアップできたので、積極的に使います！
ただMacVimも便利なので、必要に応じて使い分けます。

Neovimについては調査が足りていないため、もし誤っている箇所がありましたらご指摘いただけると嬉しいです。

## 参考リンク

- [Home - Neovim](https://neovim.io/)
- [Installing Neovim · neovim/neovim Wiki](https://github.com/neovim/neovim/wiki/Installing-Neovim)
- [neovimの設定ファイルとディレクトリの置き場 - neovim/vim入門](https://kaworu.jpn.org/vim/neovimの設定ファイルとディレクトリの置き場)
- [vim8からneovimに移行したら変更点が多くて結構ハマった - Qiita](https://qiita.com/nishiys/items/85ad7ed1e8c0780e1a52)
- [Nvim documentation: vim_diff](https://neovim.io/doc/user/vim_diff.html)
- [VimでCannot find color schemeが出る原因と対処法](https://rcmdnk.com/blog/2017/07/18/computer-vim/)
- [init.nvim にpython のpath を指定してneovim の起動速度を早くする - Qiita](https://qiita.com/euxn23/items/2d7a0ede93d35a6badd0)