yujiro's blog

エンジニアリング全般の事書きます

NeoBundle から dein.vim に乗り換えた

職場の方から教えてもらい、何やら早いらしいので変えてみました。

下記の記事に紹介されていますが、NeoBundle とくらべて30% 以上速くなったそうな。

NeoBundle から dein.vim に乗り換えたら爆速だった話 - Qiita

自分も NeoBundle に不満はなかったのですが、プラグインが多くなってくるともっさりすんなーって思っていたので、早いという話を聞いた瞬間に試してみようと思いました。

NeoBundle の開発はもう終わっていますしね!

NeoBundle development is done. I have replaced to dein.vim. Dein.vim is faster and well tested. And it implements neovim asynchronous installer.

https://www.reddit.com/r/vim/comments/47qbv9/neobundle_on_hiatus_or_done/d0fcdel/

下記では簡単な設定方法と詰まった所などご紹介します。

導入

vim のバージョン確認。 7.3 以下だと動かないです。これは気づきにくい所なので注意。動かないことは call dein#begin すれば確認できます。後ほど説明します。

$ vim --version 

(7.3以下の場合)vim のアップデート

osx :

$ brew install vim

ubuntu 14.04 :

$ sudo add-apt-repository ppa:pkg-vim/vim-daily
$ sudo apt-get update
$ sudo apt-get install vim

vim のパスを変更する(osx の場合のみ)

echo export PATH='/usr/local/bin:$PATH' >> [.zshrc , .bashrc 等]

brew install したら

/usr/local/bin

にインストールされるので

普通に .zshrc をいじって /usr/local/bin を先に読み込むように変えてもOKです。

.vimrc をいじります。まるまる下記からもってきました。

https://qiita.com/delphinus/items/00ff2c0ba972c6e41542

let s:dein_dir = expand('~/.cache/dein')
" dein.vim 本体
let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim'
" dein.vim がなければ github から落としてくる
if &runtimepath !~# '/dein.vim'
  if !isdirectory(s:dein_repo_dir)
    execute '!git clone https://github.com/Shougo/dein.vim' s:dein_repo_dir
  endif
  execute 'set runtimepath^=' . fnamemodify(s:dein_repo_dir, ':p')
endif
" 設定開始
if dein#load_state(s:dein_dir)
  call dein#begin(s:dein_dir)

  " プラグインリストを収めた TOML ファイル
  " 予め TOML ファイル(後述)を用意しておく
  let g:rc_dir    = expand('~/.vim/rc')
  let s:toml      = g:rc_dir . '/dein.toml'
  let s:lazy_toml = g:rc_dir . '/dein_lazy.toml'

  " TOML を読み込み、キャッシュしておく
  call dein#load_toml(s:toml,      {'lazy': 0})
  call dein#load_toml(s:lazy_toml, {'lazy': 1})

  " 設定終了
  call dein#end()
  call dein#save_state()
endif
" もし、未インストールものものがあったらインストール
if dein#check_install()
  call dein#install()
endif

この設定ですが、ここで dein.vim の強力な機能が垣間見えます。

Plugin を別ファイルで toml 形式で書けることです。

TOML といえば GitHub が作ったフォーマットで、Mackerel の設定ファイルもTOML 形式で書いたりなど、最近普及されてるような気がします。

toml ファイルですが、読み込み方に

{'lazy': 0}
{'lazy': 1}

の2つがあり、これは遅延ロードするかどうかです。

書き方に関しては

NeoBundle から dein.vim に乗り換えたら爆速だった話 - Qiita

を参考にしてください∠(`・ω・´)


という全然役にたたない情報ですが、

なにか新しい発見があったら追記しますw