VimperatorのプラグインfeedSomeKeys.jsの設定でハマった

Vimperatorを使いつつlivedoor ReaderやGmailなどのWebアプリのショートカットを利用できるようにするプラグイン「feedSomeKeys.js」の導入にハマってしまったのでメモ。環境はFirefox 3.0.3 with Vimperator 1.2


CodeReposから最新版のfeedSomeKeys.jsをダウンロードしてVimperatorのプラグインディレクトリにコピー。feedSomeKeys.jsの最初のコメントに書いてある設定例を参考にして、.vimperatorrc(Windowsだと_vimperatorrc)に以下の設定を記述した。*1

" feedSomeKeys.js
autocmd LocationChange reader\.livedoor\.com/reader fmaps j k s a p o v c <Space> <S-Space> z b < >
autocmd LocationChange mail\.google\.com/mail fmaps -d 4 c / j k n p o u e x s r a # [ ] z ? gi gs gt gd ga gc

これで一応livedoor ReaderやGmailのショートカットキーは利用できるようになったのだけど、それと同時に他のページでもjやkなどのキーが使えなくなってしまった。あやややや。
よく見るとjやkを押した時に画面下のステータスバー(?)に一瞬PATH THROUGHって表示される。livedoor Readerなどのページで一部のVimperatorのキーを無効化した状態がそのまま全てのページで残ってしまっているみたい。


さてさてこれはどういうことなのか、といろいろ調べているうちに、retletさんのfeedSomeKeys.jsの紹介記事に以下の記述があるのを見つけた。

retlet.net - Vimperatorと、ウェブアプリやUserscriptのショートカットキーを共存させるfeedSomeKeys.jsプラグイン

URLごとに指定するには、ex_autocmd.jsを併用して以下のように記述する。

autocmd LocationChange .* :fmapc
autocmd LocationChange http://reader\.livedoor\.com/reader/ :fmap j

:fmapc を先に書かないと端からクリアされて正しく動作しないので注意。

:fmapcが必要だったか!!!!!
その他のページに遷移したらfeedSomeKeys.jsを無効化しましょうね的な設定を書かなければならなかったというオチ。


というわけで以下のように.vimperatorrcを書き直したら上手くいったよ。

" feedSomeKeys.js
autocmd LocationChange .* :fmapc
autocmd LocationChange reader\.livedoor\.com/reader fmaps j k s a p o v c <Space> <S-Space> z b < >
autocmd LocationChange mail\.google\.com/mail fmaps -d 4 c / j k n p o u e x s r a # [ ] z ? gi gs gt gd ga gc

feedSomeKeys.jsの最初のコメントに書かれている設定例だけ見ているとハマってしまうな、これは。とりあえず解決してよかった。


ちなみにVimperator 2.0preでfmapsを使って設定を書く場合は、.vimperatorrcの設定のURL部分でバックスラッシュ「\」を二つ重ねて書く必要があるらしい。reader\\.livedoor\\.com/readerみたいな感じ。

*1:このようなfmapsを使った設定は2008/11/1以降のfeedSomeKeys.jsのみ有効。以前のバージョンのものよりも簡潔に設定を書けて便利、らしい。