NeoBundle
NeoBundleとは、vimのプラグイン管理(プラグインマネージャ)のプラグインです。NeoBundleは、Vundleをベースにしています。Vundleとは違うコマンド名になっています。もし、今からプラグインマネージャーを使うのであれば、Vundleではなく、NeoBundleを使うべきです。vimのプラグインのインストールやアップデートを簡単に行えます。非同期実行のサポート、unite.vimの対応、リビジョン指定など、大幅に機能が強化されています。
読み方
- NeoBundle
- ねお ばんどる
目次
概要
NeoBundleは、プラグインマネージャの1つです。プラグインマネージャは、乱立しているため、いろいろなプラグインマネージャが存在しています。プラグインマネージャを導入することで、プラグインのインストールや更新が非常に簡単になります。
NeoBundleは、Vundleをベースにしています。 vimprocを使用することで、非同期にインストール/アップデートができます。
vimをプラグインで拡張することで、vimを統合開発環境(IDE)のように仕立てることもできます。詳しくは、vimのPHP開発環境などを御覧ください。
vundleとNeoBundleの違い
vundleとの違いとNeoBundleの特徴です。
- コマンド名が変更されている
- BundleInstall -> NeoBundleInstall
- コマンド名に Neo というプレフィックスが追加されています。
- NeoBundleは、vimproc に対応しているため非同期に実行できます。
- NeoBundleは、unite.vim に対応しています
- NeoBundleは、リビジョンが指定できます。
注意
このドキュメントで出てくる foobarhoge/foo.vim, foobarhoge/bar.vim は、架空のプラグインです。
vimスクリプト
vimスクリプトは、github.comやwww.vim.orgで公開されています。
必要なもの
gitコマンドが必要です。
FreeBSD
% sudo pkg install git
Ubuntu
% sudo apt-get install git-core
Windows
Git for Windowsをインストールします。 http://git-scm.com/downloads からダウンロードできます。
インストール時のオプション設定は、以下の通りです。
- Adjusting your PATH environment は Use Git Bash only を選択しました。
- Run Git and included Unix Tools from the Windows Command Prompt は、find.exe, sort.exe とかを上書きするとか書いてあったので、やめておきました。
- Configuring the line ending conversions は Checkout Windows-style, commit Unix-style line endings を選択しました。
セットアップ
NeoBundle自体は、一度、手動でローカルにダウンロードする必要があります。gitコマンドで簡単に取り寄せられます。
% mkdir ~/.vim/bundle % git clone https://github.com/Shougo/neobundle.vim \ ~/.vim/bundle/neobundle.vim
vundleからの移行
vundle をもし使用していたなら、vundleとプラグインを一度、削除してしまいましょう。
% rm -rf $HOME/.vim/bundle % rm -rf $HOME/.vim/vundle.git
また、.vimrc から bundle に関連する設定を消しましょう。 .vimrc の Bundle は NeoBundle に変更します。
$HOME/.vimrc
set nocompatible filetype off " for NeoBundle if has('vim_starting') set rtp+=$HOME/.vim/bundle/neobundle.vim/ endif call neobundle#begin(expand('~/.vim/bundle')) NeoBundleFetch 'Shougo/neobundle.vim' call neobundle#end() " ここから NeoBundle でプラグインを設定します " NeoBundle で管理するプラグインを追加します。 NeoBundle 'Shougo/neocomplcache.git' NeoBundle 'Shougo/unite.vim.git' filetype plugin indent on " restore filetype
:NeoBundleコマンドの引数
github, vim.org のプラグインのアドレスは、省略できます。
- NeoBundle 'git://github.com/foobarhoge/foo.vim'
- フルパス
- NeoBundle 'foobarhoge/foo.vim'
- 省略表記, github.comのリポジトリを意味します
- NeoBundle 'hoge'
- プラグイン名のみの場合は、vim.orgのプラグインを表します。
NeoBundle の使い方
基本的に .vimrc に NeoBundle 'foo.vim' の行を追加し、vimから :NeoBundleInstall してプラグインをインストールし、 NeoBundleUpdate でプラグインを更新できます。
詳しい説明は、以下をお読みください。
プラグインのインストール
プラグインを追加する場合には、以下の手順で行います。
- .vimrcにプラグインの設定を追加します。これは、例ですが、github.comで公開されている foobarhoge/foo.vim(実在しません)のプラグインを追加する場合は、
と設定します。NeoBundle 'foobarhoge/foo.vim'
- vimを起動します。
- NeoBundleInstallを実行します。
:NeoBundleInstall
- vimを終了し、vimを起動します。
- インストール(追加)したプラグインがロードされた状態になります。
Windowsの場合は、git bashを起動し、bash上からvimを起動します。
以上です。
プラグインのアップデート
プラグインをアップデートする場合には、以下の手順で行います。
- vim を起動します。
- NeoBundleUpdateを実行します。
:NeoBundleUpdate
- vimを終了し、vimを起動します。
NeoBundleUpdate の代わりに NeoBundleInstall! でもアップデートできます。
Windowsの場合は、git bashを起動し、bash上からvimを起動します。
以上です。
プラグインの削除
- .vimrcから NeoBundle の行を削除します。
- vimを起動します。
- :NeoBundleClean を実行します。
- vimを終了し、vimを起動します。
プラグインの遅延ロード
NeoBundleは、「遅延ロード」ができます。 プラグインを大量にロードするには、時間がかかり、vimの起動が遅くなります。 遅延ロードでは、必要になったタイミングでロードできます。
filetype が mediawiki のときに、 mediawiki.vim をロードする例です。
NeoBundleLazy 'mediawiki.vim', { \ "autoload" : { "filetypes" : [ "mediawiki" ] } }
OSごとのロード
これは、NeoBundleなどプラグインマネージャは関係はありません。 OSによって、使用するプラグイン、使用しないプラグインがあります。 Windowsでsudo.vimを使っていないので、以下の様な設定になっています。
if has("win32") || has("win64") " 設定 NeoBundleLazy 'mediawiki.vim', \ { "autoload" : { "filetypes" : [ "mediawiki" ] } } endif if has("unix") || has("mac") NeoBundle 'vim-scripts/gtags.vim', \ { "autoload" : { "filetypes" : [ "c", "cpp" ] } } NeoBundle 'vim-scripts/sudo.vim' endif
リビジョンのロック
引数にリビジョン番号やブランチ名を指定することで、特定のリビジョン、ブランチが使用できます。
NeoBundle 'foobarhoge/foo.vim', 'ver.1.50' NeoBundle 'foobarhoge/bar.vim', {'rev':'3333e3'}
ローカルのディレクトリからの読み込み NeoBundleLocal
NeoBundleLocal ~/.vim/bundle
依存関係の定義
プラグインごとに依存関係が定義できます。依存関係にあるプラグインもインストール、アップデートされます。
NeoBundle 'foobarhoge/foo.vim', \ { 'depends': 'foobarhoge/bar.vim' }
非同期アップデート
NeoBundleは、vimprocを自動認識します。vimprocがインストールされている場合、非同期でインストールとアップデートができます。
NeoBundle 'Shougo/vimproc', { \ 'build' : { \ 'windows' : 'make -f make_mingw32.mak', \ 'cygwin' : 'make -f make_cygwin.mak', \ 'mac' : 'make -f make_mac.mak', \ 'unix' : 'gmake -f make_unix.mak', \ }, \ }
プラグイン検索
unite.vim上でプラグインが検索できます。
- :Unite neobundle/search
エラー
[neobundle] neobundle#rc() is deprecated function.
NeoBundleをアップデートしたら、以下のエラーが出るようになりました。
[neobundle] neobundle#rc() is deprecated function. [neobundle] It will be removed in the next version. [neobundle] Please use neobundle#begin()/neobundle#end() instead.
.vimrcの以下の行を修正します。
call neobundle#rc(expand('~/.vim/bundle'))
修正後の設定は、以下の通りです。
call neobundle#begin(expand('~/.vim/bundle')) NeoBundleFetch 'Shougo/neobundle.vim' call neobundle#end()
[neobundle] `NeoBundle` commands must be executed within a neobundle#begin/end block.
NeoBundleをアップデートしたら、以下のエラーが出るようになりました。
[neobundle] `NeoBundle` commands must be executed within a neobundle#begin/end block. Please check your usage. call neobundle#end()
.vimrc の変更前は、このように書いていました。
call neobundle#begin(expand('~/.vim/bundle')) NeoBundleFetch 'Shougo/neobundle.vim' call neobundle#end() NeoBundle '...' NeoBundle '...'
begin/end ブロックが悪いようなので、以下のように修正しました。これで問題は、修正されました。
call neobundle#begin(expand('~/.vim/bundle')) NeoBundleFetch 'Shougo/neobundle.vim' NeoBundle '...' NeoBundle '...' call neobundle#end()
関連項目
ツイート