導入
皆さんはvimperator使ってますか?vimperatorはfirefoxの拡張機能で、Vim的なキーバインドでブラウザを操作できるだけでなく、プラグインを入れることによって、更に便利に使いこなすことができるようになります。(といっても、プラグインはあまり使ってこなかったのだけれど)
で、プラグインつかってみようかなーと思った時に、VimのNeoBundle的なvimperatorのプラグイン管理プラグインはないんか!ということでいろいろ調べて、ひとまず解決したと思うので書いておきます。
どうするか
有名どころですが、vimperator-pluginsのplugin_loader.jsは、自分でどこかからかダウンロードしてきたプラグインのあるディレクトリを指定し、プラグイン名(jsファイル)を指定することによって~/.vimperator/plugin/
以下にシンボリックリンクを貼らずともプラグインを有効にすることができます。
" set the root dir for loading plugins(you can set multiple directories)
let g:plugin_loader_roots = "~/.path/to/vimperator/plugins,~/path/to/another/plugins"
" specify the plugin you use (you can omit '.js')
let g:plugin_loader_plugins = "plugin1,plugin2"
ただ、NeoBundleのように、GitHubのリポジトリを指定するだけでインストールから何までやってくれるわけではないようです。
そこで、vimppmというプラグインを使います。
作者さんの説明の通りにvimppm.js
をダウンロードしてきて、vimppm
というディレクトリを作り、先ほどのplugin_loader.js
で管理する方法でもいいのですが、今回は面倒なのでvimppm.js
のソースを書き換えて、ダウンロードしてきたプラグインが直接plugin
ディレクトリ以下に入るようにします。
vimppm.js
を以下のように書き換える:
functiongetVimppmDir(){varvimperatorDir=io.File(io.File.expandPath("~/.vimperator"));// if (vimperatorDir.exists()) return "~/.vimperator/vimppm";if(vimperatorDir.exists())return"~/.vimperator/plugin";vimperatorDir=io.File(io.File.expandPath("~/vimperator"));// if (vimperatorDir.exists()) return "~/vimperator/vimppm";if(vimperatorDir.exists())return"~/vimperator/plugin";vimperatorDir=io.File(io.File.expandPath("~/_vimperator"));if(vimperatorDir.exists())// return "~/_vimperator/vimppm";return"~/_vimperator/plugin";elsereturnfalse;}
このプラグインの使い方ですが、先ほどのブログ記事やREADMEを読めば解ると思いますが、GitHubの~/.vimperatorrc
に
source ~/.vimperator/vimppm/vimppm/plugin/vimppm.js" vimppmを置いた場所
vimppm "plugin1.js"
vimppm "plugin2.js"
のように書いておき、firefoxを再起動してから:vimppm install
とすると、ここに指定されたプラグインが~/.vimperator/vimppm
(今回は~/.vimperator/plugin
)内にプラグインがクローン(ソース見る限りはwget)されます。また、:vimppm update
で最新版に更新することもできます。また、vimpr/vimperator-plugins
の中のプラグインは、そのプラグイン名だけで指定することができます。このようにすれば、複数マシンを使っていてもvimperatorのプラグインを共有できるので良いですね!また、設定ファイルにどのプラグインを入れているかを直接書くことになるので、後から自分が見た時や、他の人が見た時にわかりやすくなっていいと思います。
まとめ
plugin_loader.jsとvimppm.jsが合体すればさいつよなんだろうけど、自分にはJavaScriptの知識が無いので、ぜひ誰かに書いてほしい…です。