Vim8とNeovimと私（Vim初心者）

[neocomplete.vim](https://github.com/Shougo/neocomplete.vim)から[deoplete.nvim](https://github.com/Shougo/deoplete.nvim)に乗り換え〜とか思ったんですが、使ってたvim8だと導入めんどくさそうとか思って、軽い気持ちでNeovimに手を出してみたら結局いろいろめんどくさかったけど、結果ちょっと快適になったかもしれないとかそういう話です。
自分用の忘備録としてまとめます。
Vimを使い始めて2年目、（フロント）エンジニアリング歴も同じくらいのデザイナーが書く記事なので、Vimmer先輩諸氏におかれましては、気になる部分とか色々あるかと思いますが、HRTの精神で編集リクエストやコメントなどしていただけるとありがたく思います。


## 初めてのNeovim
[Neovim](https://neovim.io)
次世代のVimと言われているようです。Vim歴1年半くらいのぺーぺーなので突っ込んだところはよくわかってません。
VimからForkして開発されてるってことくらいしかわかってません。でもVimとほとんど変わりません。Vimと互換性があるようで大抵のVim scriptとかオプションはそのまま使えます。
あとはセルフチェック機能があるとか…それくらいですかね。噂ではVimより若干早い…のかなぁ（体感的にはあまり感じてないです）。

基本的には公式の[ドキュメント](https://github.com/neovim/neovim/wiki)を見ればインストールとかのセットアップは出来ます。
Vimで使ってる`.vimrc`とかもそのまま使えたり`.vim`も使えたりするようです。
私の場合は、まずはNeovimとDeoplete.nvimを試しに使ってみたいというのと、vimrcファイルがプラグインとかキーマッピングの設定とかがとにかくごちゃごちゃしてるのを「この際だからtomlファイルとか使って整理したいなぁ」とか考えたんで、VimとNeovimの設定の共有はしないことにして、別々に管理することにしました。

とりあえずな感じですが、設定ファイルはこの辺に突っ込んであります。
[redbear/nvim at master · ksm240/redbear · GitHub](https://github.com/ksm240/redbear/tree/master/nvim)

ディレクトリ構造はこんな感じになってます。
`.vim`配下はいろいろ入りすぎてるので端折ってます。

``` bash
├── .bash_profile
├── .bashrc
├── .git_commit_template
├── .gitconfig
├── .gitignore_global
├── .vim
├── .vimrc
└── nvim
    ├── dein.toml
    ├── dein_lazy.toml
    ├── init.vim
    ├── lightline.vim
    └── rc
        └── vim-airline.rc.vim
```

`.vim`はGithubに突っ込んでいろんな環境で使えるようにしてますが、Neovimのプラグインをインストールするディレクトリはここには入れてません。特に理由らしい理由はないんですが、`init.vim`と`dein.toml`とかがあれば初回起動時に指定したディレクトリにインストールされるのでわざわざバージョン管理しなくてもいいかなって思っただけです。
Githubのリポジトリの中身を見たら分かるんですが、`dein_lazy.toml`の中身はまだ空のままです。
というのも、lazy_loadの使い所がよくわかってなくて、参考にした記事とかを見ると、deoplete.nvimとかの設定はlazy.tomlに書くのが一般的なんですかね…よく分かってないのでとりあえず全部dein.tomlに突っ込んでます。
そんな感じなのでlazy.tomlはまだ空の状態です。そのうち整理したい（…）。

## いわゆるPowerline的なStatuslineのアレ
![image.png](https://qiita-image-store.s3.amazonaws.com/0/43372/a20747a4-6ffb-6e3d-e888-a6b04fd55386.png)


一番最初はPowerlineを使っていましたが、クリーンインストールなどしたときに最初のセットアップが結構めんどくさいなぁ（Pythonを有効化したりとか…）と思って、lightline.vim使ってみた時もありました。しかしこれはこれで表示をいい感じにするのに設定めんどくさくなって今はvim-airlineを使ってます。
…………DeopleteでPython3有効にしたならPowerlineに戻っても良かったのでは…って思わなくもないです。でも、vim-airlineはthemeがあるので、使ってて楽しいなぁって思うので、入れてよかったって思います。こういうの大事だって思い込んでます。
ちゃんと調べてないのでわかりませんが、Powerlineもthemeとかあったりするんですかね？

## ついでだからUnite.vimからdenite.nvimにした話
多分、きっと早い。正直私のようなペーペーにはよく分からない領域の違いなのかなって思ってます。あー、でもpattern検索は確かに早かったかもしれない……多分。

## 肝心のDeopleteどうよっていう話
補完は大事だ。
使い心地はneocomplete.vimと変わらず快適に使えてます。
ただ、導入がちょっとめんどくさいなって思いました。Neovimだと比較的手軽に入れられるかなって思いましたけど、Vim8はpython3が有効化されてなかったりするとVimを再インストールから始まったりとかあるからちょっとめんどくさそうだなぁって思ってます。（Neovimの設定いじってる間にVim8対応したよっていうのが来たんですけど、ドキュメントちょっと眺めて「めんどくさそうなぁ」って思って後回しにしたんですよね……ガチVimmerな人はそんなことないのかもしれないけど）

## 設定してて詰まったところとかのメモ
### カラースキーム
Vim8でもそうだったんですが、 [iceberg.vim](https://cocopon.github.io/iceberg.vim/)を設定しようとしたら、なんかモノクロームっぽい画面で、「明らかに公式サイトのプレビューの色と違う」って感じになっててちょっとつまりました（キャプチャ参照）。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/43372/26342cda-81c6-beff-8c84-0d13be8f4130.png)
「明らかに公式のプレビューと違うだろ、これ」っていうときのキャプチャがこちら。

原因は`:set termguicolors`になってなかったのが原因でした。
ほかのカラースキームは特に設定してなくても普通に使えてたんですけど、iceberg.vimは設定しないとモノクロームな世界になってしまいましたね。ggっても似たようなことになって詰まってるみたいな記事は見かけなかった気がするので、きっと私の設定の問題だったと思います。
ggりまくって知ったのはVimのシンタックスハイライトとカラースキーム周りで詰まったら、大体以下の設定を確認してみると解決するかもしれません。
* 使ってるターミナルのカラー設定
* rcファイルで`:set termguicolors`がされるか
* 上に同じく、`:set syntax on`とか`:set syntax enable`とかになってるか
* xterm-colorの設定（参考は公式ドキュメントに書いてあります。[syntax - Vim日本語ドキュメント](http://vim-jp.org/vimdoc-ja/syntax.html#xterm-color)。`:h xterm-color`で見れる）
などなどなど。
ちなみになんですけど、Neovimはローカライズされてるのですこし助かりますね。

#### おまけ：おすすめカラースキーム
* [Dracula — A dark theme for Vim and 40+ apps](https://draculatheme.com/vim/)
* [iceberg.vim](https://cocopon.github.io/iceberg.vim/)
DraculaはSlackのカラースキーム（っていうかコード？）も配布してて、トータルで楽しめて好きですね。Slackもicebergな配色にしたい。

##### 追記
https://qiita.com/ksm240/items/5cd62fdd15d95d21d173#comment-53ec65869d15dff4ba76
icebergのカラーコードを公開している方からコメントをいただきました！ありがたい！
[GitHub - 39e/slack-iceberg: Color theme for slack](https://github.com/39e/slack-iceberg)

### 設定ファイルを複数のMacで共有するためのシンボリックリンクの設定
本業の方からしたら「何を今更…」な話なんですが`ln -s`するとき、大体`$HOME`で作業すると思うんですが、この時にめんどくさがって

```
$ ln -nvfs redbear/nvim/init.vim .config/nvim/init.vim
```

とかすると、`/redbear/nvim/init.vim `を参照してしまって、`cat`すると中身が空っぽの別ファイルになってることがわかります。
つまり、「ちがうそうじゃない」ってことですね。

```
$ ln -nvfs ~/redbear/nvim/init.vim ~/.config/nvim/init.vim
```

ってしないとダメなんですって。
先輩エンジニアさんに「パス操作するときは相対パスと絶対パスを意識せよ」というアドバイスをいただきました。ひとつ利口になった赤いくまです。

## todo
* プラグインごとのキーマッピングとかの設定は`**.rc.vim`とかにして管理したいかも。
* Vim8もdeopleteに切り替えたいかも。
* Vim8もvim-airlineにしてもいいかもしれない。
* つまりvim8でもいいのでは。（身も蓋もない）

Vim Conf 2017行きたかった人生でしたねぇ。

最後に宣伝ですが、[grooves](https://www.grooves.com)っていう会社ではデザイナーを募集してます。
「フロントエンドやってるけど、UX/UIデザインとか興味があってアジャイルな開発チームに興味がある」っていう方がおられましたら、お気軽に「話を聞きに行きたい」していただけるとデザイナー陣がめっちゃ喜ぶのでよろしくお願いします。ざっくばらんに情報共有でも歓迎です！リモート面談も歓迎です〜。
[詳しくはWantedlyの求人ページへ](https://www.wantedly.com/projects/163664)