NeoBundle から vim-plug に乗り換えてみた

  • 57
    Like
  • 0
    Comment
More than 1 year has passed since last update.

スクリーンショット 2015-11-17 0.41.00.png

タイトルですが, 本当は
おい、NeoBundle もいいけど vim-plug 使えよ
にしたかったです. 勇気が足りなかった

紹介するPlugin

vim-plug

これなに

Vundle , NeoBundle と同じ vim plugin manager になります.
一応, NeoBundle より後発1という形になるみたいです.
1ファイルオンリーで管理しているのが特徴.

乗り換えた理由

Install

autoload に置いてね, とのこと

curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

vim-plug に管理させたいなら, ディレクトリを指定する

if has('vim_starting')
  set rtp+=~/.vim/plugged/vim-plug
  if !isdirectory(expand('~/.vim/plugged/vim-plug'))
    echo 'install vim-plug...'
    call system('mkdir -p ~/.vim/plugged/vim-plug')
    call system('git clone https://github.com/junegunn/vim-plug.git ~/.vim/plugged/vim-plug/autoload')
  end
endif

call plug#begin('~/.vim/plugged')
  Plug 'junegunn/vim-plug',
        \ {'dir': '~/.vim/plugged/vim-plug/autoload'}
  ...
call plug#end()

Usage

call plug#begin('~/.vim/plugged')

" Vundle/NeoBundle と同じように
Plug 'junegunn/seoul256.vim'

" コマンド実行時に読み込む
Plug 'scrooloose/nerdtree', { 'on':  ['NERDTreeToggle'] }

" 指定したファイルタイプを開いたときに読み込む
Plug 'tpope/vim-fireplace', { 'for': ['clojure'] }

" X | Y の時, X をインストールした後に Y をインストール
Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets'

call plug#end()
:PlugInstall

遅延読み込みできてるかどうかは :PlugStatus で確認しながらできるのがいいですね

Tips

一度プラグインを読み込むとonに指定したコマンドは削除されてしまうよう..
なので依存するプラグインは一緒のタイミングを指定しないとだめっぽい.

" Good?Bad? Practice
let b:commandDepends = ['Unite', 'UniteWithBufferDir',
      \ 'VimFilerCurrentDir', 'VimFilerBufferDir']
Plug 'Shougo/unite.vim', {'on': b:commandDepends, 'for': ['unite']}
      \ | Plug 'Shougo/vimfiler', {'on': b:commandDepends}
unlet b:commandDepends

" Bad
Plug 'Shougo/unite.vim', {'on': ['Unite'], 'for': ['unite']}
      \ | Plug 'Shougo/vimfiler', {'on': ['VimFilerCurrentDir', 'VimFilerBufferDir']}
" -> Unite 実行後に VimFiler を実行しないと駄目

" Bad
Plug 'Shougo/unite.vim', {'on': ['Unite', 'VimFilerCurrentDir', 'VimFilerBufferDir'], 'for': ['unite']}
      \ | Plug 'Shougo/vimfiler', {'on': ['VimFilerCurrentDir', 'VimFilerBufferDir']}
" -> Unite を先に実行してしまうと vimfiler の on がなくなってしまう...

  1. 後発といっても2013年ぐらいからあるみたいですが...