読者です 読者をやめる 読者になる 読者になる

vimプラグインの管理をpathogen.vimにした

vimプラグインの管理を最近はやりのpathogen.vimを使う方法に変更しました。


今までは、vimanaを使ってみたりいろいろ試してはみたのですが、なかなかしっくり来る方法が見つからなかったのですが、pathogen.vimを使ってみたら、かなり使い心地が良かったため、完全に移行しました。

pathogen.vimとはなんぞや

まず、pathogen.vimvimプラグインの読み込みパスを変更するプラグインです。
従来は .vim/ 以下のpluginとかautoloadとかのディレクトリを読み込むようになっているところを、pathogen.vimをいれると .vim/bundle/<プラグイン名>/以下の各ディレクトリも .vim/ 直下と同じように読み込むようになってくれます。
これにより、bundle/ 以下にプラグインごとに別のディレクトリを切って管理をすることができるようになります。


従来のvimプラグインの管理の欠点として、すべてのプラグインを同じディレクトリに放り込まないといけなかったため、どのファイルがどのライブラリのためのものかわからなくなったり、プラグインごとにディレクトリを切らざるを得ないGitなどのレポジトリで管理されているライブラリとの相性が非常に悪かったことなどがあります。
このpathogen.vimを使うとそのあたりの欠点がすっきり解消されるため、vimプラグイン管理の見通しが非常によくなります。

pathogen.vim の導入

まずはpathogen.vimの導入です。


pathogen.vim はgithubで管理されているので、githubから落としてきます。
https://github.com/tpope/vim-pathogen


.vim/autoload/ 以下にpathogen.vimを一枚おくだけなのですが、個人的には今後のアップデートや他のプラグインとの整合性も考えて、.vim/bundle/ 以下において、.vim/autoload/ からシンボリックリンクを貼るのがいいかと思います。
また、後述しますが、.vim/ 自体もgit管理している場合は、gitのsubmoduleとして管理するのが楽かと思います。

$ mkdir .vim/bundle
$ git submodule add git://github.com/tpope/vim-pathogen.git .vim/bundle/vim-pathogen
$ ln -s .vim/bundle/vim-pathogen/autoload/pathogen.vim .vim/autoload/


あとは、.vimrcにpathogenを読み込む設定を書けばOKです。

$ vi .vimrc
call pathogen#runtime_append_all_bundles()

git管理のプラグインの移行

せっかくなので簡単にプラグインの移行方法も書いておきます。


まずは、gitレポジトリで管理されているプラグインです。
これは pathogen.vim を使うと導入が劇的に簡単になります。


gitには他のgitレポジトリをsubmoduleとして取り込む機能があります。
そのため、.vim/ 自体をgit管理している場合は、そのプラグインのgitレポジトリをsubmoduleとして取り込めばOK。

$ git submodule add git://github.com/msanders/snipmate.vim.git .vim/bundle/snipmate.vim  

vimball プラグインの移行

vimballの場合はそのまま入れると.vim/直下に解凍されてしまうので、インストールパスを変えることでとりあえず対応してます。

$ mkdir .vim/bundle/Align/
$ vi Align.vba
:let g:vimball_home = "~/.vim/bundle/Align/"
:source %

tarやzipなどで配布されているプラグインの移行

これはそのまま、ディレクトリを掘って解凍すればOKですね。

$ mkdir .vim/bundle/project
$ cd .vim/bundle/project
$ tar zxvf ~/project-1.4.1.tar.gz

単体 .vim ファイルで配布されているプラグインの移行

個人的にどうするか迷ったのがこの単体.vimファイル1枚で管理されているプラグイン。
まあ、これくらい.vim直下に入れて管理してしまっても全然問題ないと思います。


ただ、なんとなく美しくないので、他と同じようにbundle以下にディレクトリを掘って同じように管理するようにしました。

$ mkdir -p ~/.vim/bundle/yanktmp/plugin
$ mv .yanktmp ~/.vim/bundle/yanktmp/plugin/


最終的にこんな感じになりました。
https://github.com/mkataigi/dotfiles-vim