Vim
neobundle
dein.vim
vim-plug
80
どのような問題がありますか?

この記事は最終更新日から5年以上が経過しています。

投稿日

更新日

NeoBundleからvim-plugへ

シンプルなのに強力なvim-plug

  • NeoBundleの開発が中断されてDein.vimへの移行が推奨されていた。
  • Dein.vimのプラグインの記入方法が好みではなかったので、以前から見ていたvim-plugへの引っ越しを決めた。
  • 結果的には大満足。早いということは聞いていたが、何よりプラグインの記入方法が分かりやすくてとても気に入った。
  • 60個以上のプラグインを設置するとき体感できるほどNeoBundleに比べて早かった。
  • 起動するときの速度についてはここを参考。

NeoBundle vs vim-plug

遅延読み込み(lazy loading、on-demand loading)

  • NeoBundleの方はlazy loading、vim-plugの方はon-demand loadingと読んでいる。
  • NeoBundleの場合はNeoBundleLazyを使って色んなオプションを付けられるが、場合によっては冗長になりやすい。
  • NeoBundleの場合(コマンドで呼ばれたときに読み込む)
NeoBundleLazy 'scrooloose/nerdtree', {
\    'autoload': {
\      'commands': 'NERDTreeToggle'
\    }
\  }
  • vim-plugの場合(コマンドで呼ばれたときに読み込む)
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
  • NeoBundleの場合(ファイルタイプで呼ばれたときに読み込み)
NeoBundleLazy 'vim-ruby/vim-ruby', {
\    'autoload': {
\      'filetypes': 'ruby'
\    }
\  }
  • vim-plugの場合(ファイルタイプで呼ばれたときに読み込み)
Plug 'vim-ruby/vim-ruby', { 'for': 'ruby' }

自動コンパイル(事前作業)

  • NeoBundleの場合
    • buildのところにOS別にやりたいことを書く。
NeoBundle 'Shougo/vimproc.vim', {
  \ 'build' : {
  \     'windows' : 'tools\\update-dll-mingw',
  \     'cygwin' : 'make -f make_cygwin.mak',
  \     'mac' : 'make -f make_mac.mak',
  \     'unix' : 'make -f make_unix.mak',
  \    },
  \ }
  • vim-plugの場合
    • dirがディレクトリ指定で、doのところにやりたいことを書く。
Plug 'Shougo/vimproc.vim', { 'dir': '~/.vim/plugged/vimproc.vim', 'do': 'make' }

遅延読み込みについて(補足)

  • ここの内容を訳しただけだが、これぐらい分かれば大体やりたいことはできる。 

  • 指定されたコマンドが実行されるときプラグインを読み込む。

Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
  • 複数のコマンドを指定する場合
Plug 'junegunn/vim-github-dashboard', { 'on': ['GHDashboard', 'GHActivity'] }
  • 指定されたファイルタイプのファイルを開くときプラグインを読み込む。
Plug 'tpope/vim-fireplace', { 'for': 'clojure' }
  • 複数のファイルタイプを指定する場合
Plug 'kovisoft/paredit', { 'for': ['clojure', 'scheme'] }
  • コマンドとファイルタイプを両方指定する場合
Plug 'junegunn/vader.vim',  { 'on': 'Vader', 'for': 'vader' }
  • プラグインが読み込まれるときやりたいことを記入する。
Plug 'Valloric/YouCompleteMe', { 'for': 'cpp' }
autocmd! User YouCompleteMe if !has('vim_starting') | call youcompleteme#Enable() | endif

vim-plugだけの機能

プラグインの状態を確認

  • これを使えばプラグインがロードされているかどうかわかる。
  • コマンドラインモードにてPlugStatusを実行する。
:PlugStatus
  • 遅延読み込みのプラグインは(not loaded)がプラグイン名の横に表示される。
  • vim-rubyやvim-railsなどはファイルタイプがrubyである場合のみ読み込まれるように書いた。

PlugStatus01.png

  • ファイルタイプがrubyであるファイルを開いた後、もう一度PlugStatusで確認すると今度はvim-rubyやvim-railsの横に(not loaded)の表示が消えた。

PlugStatus02.png

変更履歴の表示

  • 以前アップデートとの変更点を表示する。
:PlugDiff

PlugDiff.png

プラグインのスナップショット

  • プラグインの現在のスナップショットを生成して復元に使える。
  • スナップショットの生成
:PlugSnapshot [output path]

PlugSnapshot.png

  • 復元
vim -S [output path]

感想

  • NeoBundleを使っているときは書き方が面倒だったので遅延読み込みをあまり使っていなかったが、vim-plugで切り替えて積極的に使うようになった。
  • .vimrcが以前より読みやすくなった。
  • シンプルな上に、プラグインの状態の確認など有用な機能を提供している。

参考

ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
park-jh
プルスタックエンジニアになれるまで頑張ろう。
この記事は以下の記事からリンクされています
park-jhPowerlineは難しくないよ!からリンク
park-jhtmuxのステータスバーからリンク
KeitaNakamuraVimカスタマイズ入門からリンク
KeitaNakamuraVimヘルプを日本語化!からリンク

コメント

この記事にコメントはありません。
あなたもコメントしてみませんか :)
ユーザー登録
すでにアカウントを持っている方はログイン
記事投稿イベント開催中
データに関する記事を書こう!
~
80
どのような問題がありますか?
ユーザー登録して、Qiitaをもっと便利に使ってみませんか

この機能を利用するにはログインする必要があります。ログインするとさらに下記の機能が使えます。

  1. ユーザーやタグのフォロー機能であなたにマッチした記事をお届け
  2. ストック機能で便利な情報を後から効率的に読み返せる
ユーザー登録ログイン
ストックするカテゴリー