自分なりのvimプラグイン管理方法
- これは何?
-
いっぱい入れるととっちらかって、削除する時に大変な目にあうで有名なvimプラグイン
そんなvimプラグインの自分なりの管理方法のメモです
未だ思考錯誤中の為、ご参考までに
- 目標
-
必要に応じて、pluginを簡単に追加、更新、削除できること
(簡単にpluginを試用、修正したい)
- vim.orgで管理されているもの
-
vimの機能 GetLatestVimScripts を使うことで、簡単に追加、更新が可能です
Vim documentation: getscript
また、 以下のサイトでプラグインの検索、登録、GetLatestVimScripts.bat の自動生成が出来るので、ここでインストールしているプラグインを管理するのがオススメです
リンクは、かせいさんが登録している plugin
ユーザ - Vimpi
プラグインを削除したい場合は、全て削除して、GetLatestVimScripts.batを修正後、再度 GetLatestVimScripts するのが無難かしら?
このあたり、未だよい方法見つかってません
- vim.orgで管理されていないもの
-
plugin 毎に別途ディレクトリを切って、.vimrc にて runtimepath に追加してやる方法を考案しました
こんな感じに .vim/otherPlugins の中に、プラグイン毎にディレクトリを切って…
.vim +- otherPlugins | +- eregex | +- doc | +- plugin | +- reloadfirefox | +- plugin | +-local // 自分で修正したプラグイン or 自作プラグイン +- plugin
んで、.vimrc にて以下のようなスクリプトを書いて、各ディレクトリを runtimepath に追加します
"--------------------------------------------------------------------- " GetLatest対象外プラグイン {{{ "--------------------------------------------------------------------- " ~/.vim/{pluginName}をruntimepathに追加 " runtimepathの初期化 set runtimepath& function! s:SetOtherPluginsPath() "otherPlugins直下のディレクトリを取得" let dir = '~/$VIMFILE_DIR/otherPlugins/' let dirs = map(split(glob(fnamemodify(dir, ':p').'*/'), '\n'), \ 'fnamemodify(v:val, ":h")') "それらのafterも生成" let dirsAfter = map(copy(dirs), 'v:val."/after"') execute "set runtimepath&" let &runtimepath = join(dirs + [&runtimepath] + dirsAfter, ',') endfunction call s:SetOtherPluginsPath() "}}}
これだと、プラグインの管理が楽になる他、pluginを試用したい時にも、適当なディレクトリを作って、配列に追加してやればよいので楽です
弱点
.vim/ 直下にあること前提らしいプラグインや、.vim/ の前に読み込むと挙動がおかしくなるプラグインは、.vim/ に置かざるをえませんでした
具体的には、autocomplpop を .vim/ 以外に置くと、snipMate が正しく動かなくなりました
いまいち理解が足りていないので、気が向いたら調査します
2009/06/15追記
ns9tksさんのトラバを参考にruntimepathを絶対pathで指定するようにしたところ上手く動きました(他にも原因があるかも…)
Re: 自分なりのvimプラグイン管理方法 - ns9log
- vim.orgで取得した後に独自に改造したプラグイン
基本的には、vim.orgで管理されていないプラグインと同様に独自にディレクトリを切ります
但し、上記の理由で.vim直下に置かざるを得なかったものについては、アップデート時に間違えて上書きをしてもいいように、.bak にバックアップを取っておき、更新後に .bak の内容でマージします
- まとめ
大体上記のような方法でプラグインを管理してます
もうちょっとエレガントな方法がありそうな気がするのですが、みなさんどうしてます?
みなさんのプラグイン管理方法をコメント頂けると感謝感激です
そんな感じです
- トラバレス
-
私は * 一連のファイルをバージョン管理システムの配下に置く。 * 必要に応じて作業ディレクトリから各種ファイルを~/.vim等に配置。 * 試用したいプラグインがあれば~/.vim等の下に直接配置して試す。 o 気に食わなければrm -rf ~/.vim等して作業ディレクトリから再配置。 o 気に入ればバージョン管理システムの配下に置く。 プラグインのコードを含む全ての状態を再現可能にしたいのでGLVSは使えません。
Re: 自分なりのvimプラグイン管理方法 - かせいさんとこ - while ("im the true Vim master"); - vimグループ
超早なレスポンス感謝です!!
普通に、バージョン管理システムという手がありましたね…
どうにも、GLVSと、DropBoxにとらわれて思いつけませんでした
subversionでも使ったオレオレリポジトリによる管理も検討してみたいと思います。感謝です!!
自分もプラグインごとにディレクトリを分けて(ディレクトリ名はvim-*)、次のようなスクリプトで runtimepath に追加してます。 〜 中略 〜 > 具体的には、autocomplpop を .vim/ 以外に置くと、snipMate が正しく動かなくなりました うちでは Windows と debian でどちらもちゃんと動いております。
Re: 自分なりのvimプラグイン管理方法 - ns9log
トラバどうもです!仲間がいてよかったですw
上記スクリプトを参考に、runtimepathを絶対pathで指定してあげたら、
無事 autocomplop も、snipMate も無事動作するようになりました
vimscriptもあまり慣れていないのでリファレンスを読みながら勉強させてもらいました
mapやfilter等の配列操作系の関数の使い方がエレガントですねー
勉強になりました!