karakaram-blog

neobundleとpathogenを共存させてVimのプラグインを管理する

 ツイート 5  シェア 0  Google+1 0  Hatena 6

vim-logo

私はこれまでpathogenでプラグインの管理をしていましたが、このたびプラグインの大部分をneobundle管理下に移行しました。

結果は大満足です。何でもっと早く移行しなかったんだろうと思っています。

neobundleの仕様により、pathogenから完全に離れることができなかったため、現在はneobundleとpathogenを併用する形を取っています。

この記事では、Vimのプラグインをneobundleとpathogenを共存させて管理する方法、neobundleに移行してよかった点、neobundleの便利な使い方などを紹介します。

参考にさせて頂いたサイト
VimプラグインをNeoBundleとPathogenで管理する


4月21日追記
Shougoさんにご指摘いただき、neobundleをpathogenのように動作させる方法が分かりました。下記の記事でその方法を紹介しています。

neobundleでpathogenと同等の機能を使用する方法

動作確認環境

  • Vim 7.3
  • neobundle 0.1
  • pathogen 2.0

neobundleを使用するにはgitが必要です。githubからgit cloneができる環境を整えておきます。

目次

  1. neobundleに移行した理由
  2. neobundleとpathogenを共存させている理由
  3. neobundleに移行してよかった点
  4. ディレクトリ構成
  5. .vimrcサンプル
  6. neobundle本体をダウンロード
  7. neobundle経由でプラグインをインストール
  8. 便利な使い方
  9. 困ったらhelpを
  10. gitの勉強方法

neobundleに移行した理由

私はWindows, Mac, Linux 3つのOSでVimを使用しています。扱うプラグインが増えるにつれ、それぞれの環境でプラグインのバージョンを同期させるのがしんどくなってきました。

.vimrcをgithubで管理するようになり、gitもある程度使えるようになってきたので、これを機にプラグイン管理をneobundleに移行することにしました。

neobundleとpathogenを共存させている理由

pathogenは、neobundleで管理できないプラグインをフォローするために使用しています。

neobundleでプラグインを管理するためには、プラグインがgithubなどのリポジトリに登録されている必要があります。私が愛用しているプラグインはgithubに登録されていないものがありますので、それらのプラグインは引き続きpathogenで管理しています。

また、自分で作成した実験的なプラグインもpathogenで管理しています。


4月21日追記
Shougoさんにご指摘いただき、neobundleをpathogenのように動作させる方法が分かりました。下記の記事でその方法を紹介しています。

neobundleでpathogenと同等の機能を使用する方法

neobundleに移行してよかった点

複数の環境下でのVimプラグインの展開と同期が非常に楽になりました。新しい環境にもすぐにVimの環境を作成することができます。

プラグインのバージョンを指定できるため、安定版を簡単に展開できるのが気に入っています。

Uniteとの連携も便利です。

ディレクトリ構成

neobundleとpathogenを共存させるにあたり、それぞれの管理ディレクトリを分けています。

neobundleの管理ディレクトリを ~/.vim/bundle/neobundle に、pathogenの管理ディレクトリを ~/.vim/bundle/pathogen にしています。

neobundle導入前にpathogenで管理していたプラグインは ~/.vim/bundle にありましたが、いったんすべて削除して白紙の状態から始めました。

ディレクトリ構成は下記になります。

.vim
├─bundle
│ ├─neobundle
│ │ └─neobundleで管理するプラグイン
│ └─pathogen
│   └─pathogenで管理するプラグイン

.vimrcサンプル

.vimrcです。.vimrcの上のほうに書いています。
neobundleで管理するプラグインは必要に応じて追記します。

"windowsのvimfilesを.vimに変更する
if has('win32')
  set runtimepath^=$HOME/.vim
  set runtimepath+=$HOME/.vim/after
endif

filetype plugin indent off

if has('vim_starting')
	set runtimepath+=~/.vim/bundle/neobundle/neobundle.vim
	call neobundle#rc(expand('~/.vim/bundle/neobundle'))
endif

"NeoBundle
NeoBundle 'git://github.com/Shougo/neobundle.vim.git'
NeoBundle 'git://github.com/tpope/vim-pathogen.git'
"以下、インストールするプラグインのリポジトリを必要に応じて追記

"pathogen
if isdirectory(expand('~/.vim/bundle/neobundle/vim-pathogen'))
	call pathogen#infect('~/.vim/bundle/pathogen')
	call pathogen#helptags()
endif

filetype plugin indent on

neobundle本体をダウンロード

neobundle本体をgithubからcloneします。

$ cd ~/.vim/bundle/neobundle
$ git clone 'git://github.com/Shougo/neobundle.vim.git'

次回のVim起動時から、neobundle自体がneobundleで管理されるようになります。

neobundle経由でプラグインをインストール

Vimを再起動した後、Vim上で下記コマンドを実行します。

:NeoBundleInstall

.vimrcのNeoBundleコマンドで記述したプラグインがgithubからダウンロードされます。

インストールした後、プラグインの更新を適用する場合は下記コマンドで。

:NeoBundleInstall!

便利な使い方

vim-scriptsリポジトリの利用

NeoBundle 'https://github.com/vim-scripts/neocomplcache'

githubのvim-scriptsリポジトリは、www.vim.orgのミラーとなっています。安定版を使いたい方はvim-scriptsのリポジトリを利用するとよいでしょう。

プラグインのバージョンの指定

NeoBundle 'git://github.com/xxxx/xxxx.git', '1234567890'

上記のように記述することで、指定したコミットのバージョンを取り出すことができます。

安定版を使いたいけれど、vim-scriptsにリポジトリが存在しない場合に、githubでタグ打ちされた安定バージョンを指定する、といったような使い方ができます。

httpプロトコルを使用したい場合

NeoBundle 'https://github.com/xxxx/xxxx.git'

gitプロトコルではなく、httpプロトコルを使いたい場合は上記のように記述することで対応できます。

unite連携

:Unite neobundle

neobundleで管理されているプラグインがUniteインターフェースで一覧表示されます。一覧表示後、tabキーでアクションを選択してプラグインをupdateしたり、deleteしたりできます。vimfilerアクションでプラグインのディレクトリに移動できるのも便利です。

:Unite neobundle/install:!

neobundleで管理されているプラグインをすべて更新します。更新状況がUnite上に出力されて楽しいです。

困ったらhelpを

neobundleのhelpは非常に詳しく書かれています。困ったら :help neobundle しましょう。

gitの勉強方法

.vimrcをgithubで管理するところから始めるのをオススメします。

私はこちらの書籍でgitを勉強しました。基本的な使い方から、gitならではのブランチを気軽に作成してバージョン管理する方法が学べます。入門編としてオススメです。

 ツイート 5  シェア 0  Google+1 0  Hatena 6

コメント

  1. こんにちは。neobundleの作者です。neobundleを気に入ってもらえて光栄です。

    pathogenの代わりにはならない、という話ですが最近のneobundleはpathogenの代わりに使用するための機能を備えています。
    詳しくはneobundleのドキュメントを参照してください。おそらく、pathogenは不要になるはずです。

  2. ご指摘ありがとうございます。
    neobundleのドキュメントを確認し、pathogenのように動作させることができました。