Vimのplugin管理ツール、`dein`のインストールとpluginのセット

はじめに
------
vimのpluginをセットするために`dein`を各サイトを参考にしてインストールしようとしたが、どうもうまくいかないので、元のgithubから直接読み込み、設定する事にした。
その方法をここに書き留めます。

インストール対象: MacOS Ventura


参考サイトを見てもダメだった。
-----
`curl`によりgithub上にある`installer.sh`をダウンロードするが、そのgithubのアクセスがないとエラー(404)が発生。
つまり、ダウンロード先が変わっていて、動作しなかった。
参考サイトは多かったが、保存先、あるいは方法がその都度変えられるので、以下の本体を見て処理する方が確実なようだ。

deinの場所: https://github.com/Shougo/dein.vim
installerの場所: https://github.com/Shougo/dein-installer.vim

参考: installerの場所は`Shougo/dein.vim`のREADME.mdに記述(リンク)されている。

`installer.sh`のダウンロード
-----
*  `git clone`しちゃえ
　`installer.sh` のひとつファイルを入手するだけなので、全部入手する必要がなかったが、エラーが多かったので、
```$ git clone git@github.com:Shougo/dein-installer.vim.git```
で全部展開しちゃた。
展開先はどこでも構わない。私の場合、たまたま `~/.vim/plugins`に展開した。

要は、`installer.sh`にはインストール先が指定されているので、とにかく実行できれば良い。

* `wget` or `curl`で入手する
`installer.sh`を保存するディレクトリーで以下の処理により`installer.sh`を保存する。
```
$ wget -O- https://raw.githubusercontent.com/Shougo/dein-installer.vim/master/installer.sh > installer.sh
or 
$ curl -fsSL https://raw.githubusercontent.com/Shougo/dein-installer.vim/master/installer.sh > installer.sh
```
これも展開先をどこでも良い。
ちなみに、このアクセス先もgithubのREADME.mdに書かれている。従って、上記処理がダメならば、本体を見る必要がある。


`installer.sh`の実行
-----
実行により、`.vimrc`または`init.vim`の更新と`dein`のpluginの展開される事になる。
plugin管理の`dein`をpluginする処理となる。

1. 念のため前もって`.vimrc`のバックアップを取る。
既にファイルがあれば、自動でバックアップファイルが作られるので取る必要はありませんが、念のために設定ファイルをrenameし、バックアップしておきます。


1. `installer.sh`実行
実行する事により、次のふたつの処理がされています。(vimの場合)
* `~/.cache/dein`以下にpluginのデータを保存
* `~/.vimrc`の更新(`dein`のpluginしたもの)

```$ ./installer.sh```、オプションなしで実行します。
参考サイトのほとんどは`./installer.sh ~/.cache/dein`と保存するディレクトリーを指定していますが、現在のバージョンは固定になっているせいか、指定不要でエラー発生します。


2-1. 保存先の設定(vim<1>か、neovim<2>か)
![Location.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146500/3395858f-cd7f-c51f-37f6-e2dab1de386f.png)
2-2. 設定ファイルの設定(vim<1>か、neovim<2>か)
![config.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146500/fd008d0d-03cb-ebdb-1f6e-577f40e307ff.png)
2-3. 最終表示ログ
![result.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146500/0b888d79-3f99-57b5-5783-bc6c459c14f5.png)


実行前に`.vimrc`のファイルがあったので、その元のファィルを`.vimrc.pre-dein-vim`としてバックアップ保存されている。
```
Looking for an existing '.vimrc' config...
Found .vimrc. Creating backup in '/Users/mickeyoh/.vimrc.pre-dein-vim'...
```




pluginのセット
-----

`.vimrc`の一部 #begin〜#end
```.vimrc
" Call Dein initialization (required)
call dein#begin(s:dein_base)

call dein#add(s:dein_src)

" Your plugins go here:
"call dein#add('Shougo/neosnippet.vim')
"call dein#add('Shougo/neosnippet-snippets')
call dein#add('elixir-editors/vim-elixir')
call dein#add('plasticboy/vim-markdown')
call dein#add('kannokanno/previm')
call dein#add('tyru/open-browser.vim')
" Finish Dein initialization (required)
call dein#end()
```

`call dein#add('xxxxx/yyyyy')`とgithub上のxxxxx/yyyyyのpluginを設定します。
上記例では、[elixir-editors/vim-elixir](https://github.com/elixir-editors/vim-elixir)をセットします。

この設定後、`vim`起動するとセットしたpluginをgithubからダウンロードされ展開されます。

展開ディレクトリー
```
~/.cache/dein/repos/github.com
        |- Shougo/
        |      |- dein.vim/
        |- elixir-editors/
        |      |- vim-elixir/
        |- xxxxxxx
        |      |- yyyyyy
        |  
```
に展開されます。

pluginが本当に展開されたか、チェック
----
`.vimrc`に以下の処理がある。
```
" Uncomment if you want to install not-installed plugins on startup.
"if dein#check_install()
" call dein#install()
"endif
```
この処理のコメントを外すとそのチェックが可能となっている。
```
" Uncomment if you want to install not-installed plugins on startup.
if dein#check_install()
 call dein#install()
endif
```



まとめ
-----
`vim`のplugin管理として、何が良いか調査した結果、この `dein`を選択し、入れてみたが、冒頭に書いたように複数ある参考サイトの通りやってもダメだった。結局も大元のドキュメントを見たり、はたまた`installer.sh`の中身まで見て、やっとインストールに成功した。
ただ、plugin方法はわかったが、ひとつのappに複数のpluginがあるのでその選択に悩む。試してみるしか方法がないようだ。
`neovim`について、`installer.sh`の実行、項目選択により簡単に設定可能だった。新しいpluginをセットする方法も同じ。
ただ、`neovim`は`lua`で管理しているので、`dein`と競合してしまって、エラーが発生している。

`lua`にしてしまうのか、このまま`dein`を使用するのか、これからの課題となります。