Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Vimを暗黒パワーに染めるべくdein.vimを導入してみたメモ

$
0
0

はじめに

私は長年pathogenを利用しており、特に困ってはいなかった。
しかし、Vimもメジャーバージョンが上がり、プラグイン管理もそろそろ見直すべきだと感じてきた。
そのため、ひとまずQiita上でよく見かけるdein.vimを導入してみることにした。

前提: 導入前の環境

  • pathogenを使用している
  • 各プラグインはgitのサブモジュールとして管理

pathogenが登場した辺りに環境を作って今まで来たという状況である。
導入しているプラグインの数もさほど多くもなく、(一度起動したVimを閉じること自体が稀なので)起動時間に不満のない状況では遅延読み込みと言ったワードにもさほど興味を持っていなかった。

dein.vimの特徴

  • コマンドはなく、関数のみで構成されている
  • NeoVim及びVim8の非同期APIに対応
  • TOMLで設定が書ける

今時のリッチなプラグインマネージャーを利用しているならともかく、pathogenのような最低限$VIMRUNTIMEの中さえ整理できれば良いという極めてシンプルなプラグインを使っていた身としてはこの程度の認識となる。

導入手順

1. .gitmodulesから設定用TOMLファイルを生成する

:%v/url/d
:s/^.\+\/\([^\/]\+\)\/\([^\/]\+\).git/[[plugins]]^Mrepo = '\1\/\2'

^M<C-v><CR>で入力できる制御コードなので注意。

このExコマンドを実行するとTOMLっぽい形式になるので、そこから適時修正を加えてちゃんとしたTOMLファイルを仕上げる。
その際にon_ion_sourceon_ftと言った遅延ロードの設定も加えておくと良い。

2. dein.vimを適当な場所にインストールする

dein.vimのインストールすらも.vimrcに書いて自動化する例を見かけたが、すでにgitで管理しているのでサブモジュールとして管理することにした。

$ cd /path/to/dotfile_dir$ mkdir .vim/dein$ git submodule add https://github.com/Shougo/dein.vim.git .vim/dein//repos/github.com/Shougo/dein.vim

3. .vimrcを修正する

pathogen用の設定をばっさり削除し、dein.vim用の設定に置き換える。
私は以下のように書いた。

" use dein.vimif!&compatiblesetnocompatibleendif

augroup MyAutoCmd
  autocmd!
augroup END

lets:dein_dir = $HOME . '/.vim/dein'lets:dein_repo_dir =s:dein_dir . '/repos/github.com/Shougo/dein.vim'lets:toml_file =s:dein_dir . '/config.toml'let&rtp=&rtp .",". s:dein_repo_dir

if dein#load_state(s:dein_dir)call dein#begin(s:dein_dir, [$MYVIMRC,s:toml_file])call dein#load_toml(s:toml_file)call dein#end()call dein#save_state()if dein#check_install()call dein#install()endifendifsilent! execute 'helptags's:dein_repo_dir . '/doc/'

最後のhelptagsをやっておかないとdein.vimのヘルプが読めないので注意。

4. 既存のサブモジュールで管理しているプラグインたちを削除する

$ git rm -rf .vim/bundle

乗り換えてみての感想

今の状況だとあまり恩恵を感じられないというのが正直なところである。
遅延ロードの設定をしてみたが起動時間に違いを感じられないため、もっと設定を煮詰める必要がありそうだ。
vim --startuptimeでpathogen時の起動時間とdein.vim時の起動時間を計ってみたところ、起動時間が半分近く短くなっていた。

また、特定環境のみ利用するプラグインがあるのだが、dein#local()を使ってもうまく読み込むことができなかった。
ヘルプには書いていないが恐らくdein#begin()ブロック内に書く必要があるのだろうが、個人的に全端末共通の設定を.vimrcに、端末固有の設定を.vimrc.localにと分けて書いているため、できればdein#begin()ブロックもふたつ以上に分けたい。
しかし分けて書いてみてもロードされず、多分やり方はあるのだろうが段々億劫になってきたのでVim8標準のプラグイン管理機能を利用すべく.vim/pack/bundle/startに端末固有のプラグインを配置することにした。

時間を見つけて設定等を練り直そうと思うが、今の状況なら億劫になってVim8で導入された標準のパッケージ管理機能を利用する方向に進んでしまうかもしれない。

vim --startuptimeの出力結果を見ながら遅延ロードにして問題なさそうなものをひたすら遅延ロードにしたところ、pathogenを使っていたころと比べて1/3の時間で立ち上がってくるようになった。
一度起動したVimを閉じること自体稀なので起動時間の恩恵はあまり感じないのだが、たまにしか使わないプラグインを標準では読み込まないようにすることでVimの動作自体が若干軽くなった気がする。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>