vim専用プラグイン管理ツールNeoBundleであなたのvimをもっと便利に!

2015年12月18日 (2017年3月22日最終更新)
vim専用プラグイン管理ツールNeoBundleであなたのvimをもっと便利に!

操作性が特殊なため初心者涙目必至のテキストエディタ「vim」ですがその絶大な人気は言わずもがなです。そして人気を支える要因の1つがプラグインによって機能が拡張できる点であることに疑いの余地はありません。

便利なプラグインが豊富に提供されていて、自分好みにvimをカスタマイズしていくのはとても面白い作業ですが、使っているプラグインの数が増えてくると管理が大変になります。そこで本エントリではvim内のプラグインを管理するNeoBundleを紹介します。

目次
  1. NeoBundleとは
  2. NeoBundle導入の前提条件
  3. NeoBundleのインストール
  4. Linux/Macの場合
  5. 設定ファイル(.vimrc)の雛形
  6. プラグインのインストール
  7. プラグインのインストール場所
  8. プラグインの更新
  9. プラグインの削除
  10. 遅延ロードを使う
  11. filetypes
  12. functions
  13. function_prefix
  14. mappings
  15. insert
  16. まとめ

NeoBundleとは

NeoBundleは日本人のShougoさんが開発しています。これによってプラグインを簡単に導入することが出来るようになるだけでなく、全プラグインを簡単に最新版にアップデートしたり、GitHubから直接プラグインをインストールしたり出来るようになります。

NeoBundle導入の前提条件

NeoBundleを使うには以下の条件を満たす環境である必要があります。

  • vimのバージョンが7.2.051以上
  • gitコマンドにPATHが通っていること

vimやgitの導入方法は本エントリでは割愛しますのでご了承ください。

NeoBundleのインストール

Linux/Macの場合

LinuxやMacであればインストール用のシェルが提供されていますので、簡単にインストールできます。


 1="curl" 2="https://raw.githubusercontent.com/Shougo/neobundle.vim/master/bin/install.sh" 3=">" 4="install.sh" 5="$" 6="sh" 7="./install.sh" 8="[/shell" language="$"]</pre>
<h3>Windowsの場合</h3>
Windowsの場合はシェルが使えませんので、手動でインストールします。手動とは言え簡単ですので恐れる必要はありません。
<ol>
    <li>設定ファイルを格納するフォルダを作る</li>
    <li>NeoBundleをgitから取得する</li>
</ol>
コマンドにすると次のようになります。
<pre>1
$ cd <ホームディレクトリ>
$ mkdir .vim
$ mkdir .vim\bundle
$ git clone https://github.com/Shougo/neobundle.vim .vim\bundle\neobundle.vim

設定ファイル(.vimrc)の雛形

NeoBundleを使うための設定ファイルの雛形は次のようになります。先頭が”の行はコメントです。


" 起動時にruntimepathにNeoBundleのパスを追加する
if has('vim_starting')
  if &compatible
    set nocompatible
  endif
  set runtimepath+=/Users/jabaraster/.vim/bundle/neobundle.vim/
endif

" NeoBundle設定の開始
call neobundle#begin(expand('/Users/jabaraster/.vim/bundle'))

" NeoBundleのバージョンをNeoBundle自身で管理する
NeoBundleFetch 'Shougo/neobundle.vim'

" インストールしたいプラグインを記述
" 下記は unite.vimというプラグインをインストールする例
NeoBundle 'Shougo/unite.vim'

" NeoBundle設定の終了
call neobundle#end()

filetype plugin indent on

" vim起動時に未インストールのプラグインをインストールする
NeoBundleCheck

なおvimの設定ファイルはホームディレクトリ直下に.vimrcという名前で置くのが一般的です。

以上でインストールと設定ファイルの準備が完了です。ここからはNeoBundleの機能を見て行きましょう。

プラグインのインストール

プラグインをインストールするには次の手順を踏みます。

  • 設定ファイルに NeoBundle 'プラグイン名'

を追記します。場所はNeoBundleFetchの下に書きましょう。

vim_neobundle_location

  • vimを再起動(あるいは設定ファイルを再読み込み)

するとvimはプラグインをインストールするかどうかを聞いてきますので、問題なければインストールを実行して下さい。

vim_autoload_dialog

なお、自動でインストールしてくれるのは設定ファイルに以下のコマンドを書いているからです。


NeoBundleCheck

もしこのコマンドを設定ファイルに書かない場合、自動ではインストールしてくれません。この場合次のコマンドを使ってインストールします。


:NeoBundleInstall

プラグインのインストール場所

プラグインの実体である各種ファイルは、次の場所に置かれます。


<ホームディレクトリ>/.vim/bundle/<プラグイン名>/

プラグインの更新

プラグインを更新するには次のコマンドを実行します。


:NeoBundleUpdate

上記コマンドではすべてのプラグインを更新します。特定のプラグインのみを更新するには、NeoBundleUpdateに続いてプラグイン名を指定します。


:NeoBundleUpdate unite.vim

プラグインの削除

プラグインを削除するには、次の手順を踏みます。

  • 設定ファイルから削除したいプラグインのNeoBundleの記述を削除
  • vimを再起動(あるいは設定ファイルを再読み込み)
  • コマンド :NeoBundleClean を実行

するとプラグインを削除するかどうかをvimが聞いてきますので、問題なければ削除を実行して下さい。

vim_plugin_clean

なおNeoBundleCleanコマンドはプラグインの実体であるファイル群を掃除するコマンドです。まだ使う予定のあるプラグインを一時的に読み込まないようにする、という場合であれば、このコマンドの実行は必要ありません。

遅延ロードを使う

極端な話をすれば、これまでに紹介したきた3つの機能(インストール/更新/削除)を知っていればNeoBundleは使えます。

が、インストールしたプラグインの数が増えてくるとロード時間がバカにならなくなってきます。これを解消するには、プラグインが必要になるまでロードを遅延させる、という手法が有効です。これを遅延ロードと言います。

NeoBundleは遅延ロードのための記述方法があります。

例えばUniteというコマンドを実行する直前にunite.vimプラグインをロードするには、次のように設定ファイルに記述します。


NeoBundleLazy 'Shougo/unite.vim', {
\ 'autoload': { 'commands': ['Unite'] },
\ }

ポイントは「どのタイミングでロードするのか」という指定です。この例では「Uniteコマンドを実行する時」と指定しています。

他に、次のようなタイミングを指定することができます。

filetypes

java/rbなど所定の拡張子のファイルが開かれるタイミングです。より正確にはsetfiletype=xxxコマンドが実行される直前です。


NeoBundleLazy 'nvie/vim-flake8', {
\ 'autoload': { 'filetypes': ['python'] },
\}

functions

関数が呼ばれるタイミングです。


NeoBundleLazy 'tyru/open-browser.vim', {
\ 'autoload': { 'functions': ['OpenBrowser'] },
\}

function_prefix

指定の文字列を名前の頭に持つ関数が呼ばれるタイミングです。


NeoBundleLazy 'ryutorion/vim-itunes', {
\ 'autoload': { 'function_prefix': 'itunes' },
\}

mappings

プラグインがマップ用に機能を提供している場合に、その機能を使う直前のタイミングです。

分かりにくいですね。以下の設定例を見て下さい。


NeoBundleLazy 'tyru/open-browser.vim', {
\ 'autoload': { 'mappings': ['<Plug>(openbrowser-smart-search)'] },
\}

で始まるのが「プラグインがマップ用に提供している機能」です。このように書いておくと、キーマップからプラグインの機能を呼び出すタイミングでプラグインをロードすることが出来ます。

insert

インサートモードになるタイミングです。


NeoBundleLazy 'cohama/vim-insert-linenr', {
\ 'autoload': { 'insert': 1 },
\}

ちなみにインサートモードとは、文字が入力出来るモードのことです。vimは起動直後にはコマンドモードであり、文字を入力することが出来ません。コマンドモードでaやiを打つことで文字入力が可能なモードになりますが、このモードのことをインサートモードと言います。

以上、遅延ロードのご紹介でした。

なおNeoBundleLazyを書く設定ファイル上の位置ですが、NeoBundleと同じ場所でOKです。

まとめ

プラグインを使いこなせればvimの初心者は卒業。自分好みにvimをカスタマイズするのは楽しいものです。後々苦労しないためにNeoBundleを導入し、手軽かつ便利にプラグインを管理するようにしましょう。

tomo
tomo
企業向けWebシステム構築のエキスパートです。 得意な言語はJavaとC#、好きな言語はHaskell。 型が好きな固い系プログラマです。

関連記事