rcmdnk's blog
Last update

Firefox_200_200

Firefox 51が正式リリースされましたが、 このアップデートでVimperatorの機能の一部が動かなくなる問題が出ています。

Firefox 51

Firefox 51ではこれまで段階的に導入されてきたe10s (Electrolysis)という マルチプロセス技術が基本全てのユーザーに対して有効になるようになっていて、 これによってVimperatorの一部機能が動かなくなっているようです。

「Firefox 51」ではマルチプロセス化の対象がさらに拡大、サンドボックス化も開始 - 窓の杜

Vimperator don’t work in Firefox Beta. Not e10s. · Issue #568 · vimperator/vimperator-labs

特にタブ関連の機能が一通り使えなくなっていて、 :tabopen<C-p>, gtで次のタブへ移動、等が全て動きません。 duでタブを閉じる、閉じたタブを開く、も出来ません。

またrでの再読込も同様にタブの機能を使っているようでtabs is not definedというエラーが出ます。

このtabsという変数は色々なVimperatorのスニペットに載っていますがこの定義の部分が動かなくなっているようです。

また、fでリンクに数字や文字をつけてそれを押すことでリンクを開ける Hit-a-Hintの機能も動きません。(リンクに文字が関連付けられない。)

タブ関連を取り敢えず自分で実装

ぱっと使ってみて自分なりに使えなくて困ったものを取り敢えず自分で実装してみました。

.vimperatorc
1
2
3
4
5
6
7
8
nnoremap t :mytabopen about:blank<CR>:open<Space>
command! mytabopen -nargs=1 -description "Open with new tab" :js liberator.open("<args>", liberator.NEW_TAB);
nnoremap <C-n> :js gBrowser.mTabContainer.advanceSelectedTab(1, true)<CR>
nnoremap <C-p> :js gBrowser.mTabContainer.advanceSelectedTab(-1, true)<CR>
nnoremap d :js gBrowser.removeTab(gBrowser.mCurrentTab)<CR>
nnoremap u :js undoCloseTab()<CR>
nnoremap r :js gBrowser.reload()<CR>
nnoremap R :js gBrowser.reload(true)<CR>

それぞれ、新しいタブで開く、タブの移動(次、前)、タブを閉じる、閉じたタブを開く、リロード(キャッシュを使用、破棄)です。

新しいタブで開く、については、単純にこのmytabopenというコマンドを使おうとすると 補完が効かないので一旦空白ページを作ってそこでopenする様なことをしています。

取り敢えずこれでタブ周りで気になる所は直せたかな、と言う感じです。

Hit-a-Hint

これも結構重要な機能なんですが簡単には解決できそうにありません。

Hit-a-Hint :: Add-ons for Firefox: https://addons.mozilla.org/ja/firefox/addon/hit-a-hint/

とかも今は使えない様なので取り敢えずこれは様子見。。。

差し当たり、/で検索モードに入ってリンクの言葉を検索してその上に来た時にEnterを押すと そのリンクが開けるのでそれで代替しています。ちょっと、というかかなり使い勝手は下がりますが。

他のVim on Firefox

Firefoxのアドオンのサイトでvimを検索すると、 VimFx: https://addons.mozilla.org/ja/firefox/addon/vimfx/?src=search というアドオンがおすすめとして出てきます。

vim :: 検索 :: Add-ons for Firefox

これはGoogle Chromeの Vimium を参考にして作られたアドオンだそうで、 Vimium的な簡単なVimライクな操作がFirefox上で出来るようになっています。

Hit-a-Hintの機能の機能は付いていますが、コマンドラインは実装されて無くて、 open的なコマンド(oを押した時)はそのままロケーションバーにフォーカスが行くようになっています。 tだと新しいタブを開いてロケーションバーにフォーカスが行きます。

Vimperatorを素のままで操作感だけで使っている場合は十分は代替候補になると思いますが、 qmarksの様な機能やプラグインなんかを使って色々やってる場合には代替にはなりません。

単純な操作感だけであればOS全体でも出来たりするので。

唯一、現在Vimperatorで使えなくなってるHit-a-Hintがちゃんと動いてたので そこは良いな、と思ったりはしました。

設定に関してはGUIで出来ることが多いようですが、 細かい所は設定ファイルを使ってやるようで、設定ファイルはJavaScriptになっています。

後は個人的にですが、duが上下への移動になってたり Vimっぽくないな、と思う様なキー設定がなんとなくあれだったり。 まあ、変えられますし、Vimperatorに慣れてるからVimperatorのキーに疑問を思わないだけなのはありますが。

ただ、VimFxにするくらいだったらGoogle Chromeにして何かしらのVim的なものを入れるかな、と言う所も。 Vimiumに比べるとVimFxの方が色々できて良い、と言う意見もあったりしたので Vimiumを敢えて使うことは無いとは思いますが。

Google Chromeでの候補としてはcVimかな、と。

これはコマンドライン機能もあり、また設定ファイルもVimスクリプトの感覚で書けます。

Firefoxでもう一つ、昔Vimperatorとケンカ別れして行った1 Pentadactyl: http://5digits.org/pentadactyl/ ですが、こちらはHomepage上や Firefoxのアドオンサイト上: https://addons.mozilla.org/ja/firefox/addon/pentadactyl/?src=search)h での更新が止まっているので完全に辞めたのかな、と思っていたら GitHub上で更新を続けていてサイン付きのリリースが公開されています(元々の開発者ではないユーザー?)。

Releases · willsALMANJ/pentadactyl-signed

最新のpentadactyl-signed-7304.xpiを入れてみた所、 Hit-a-Hintやtabopen等もきちんと動きました。

設定ファイルに関してはVimperatorのものを多少書き直せば使えると思うので、 もしVimperatorの復帰が難しいようであればこちらに移るのも一つです。

逆に言うと、現状どこまでVimperatorとPentadactylが違う状態になってるかわかりませんが、 Pentadactylで出来るならVimperatorでも出来るだろう、とも思うのですが。

まとめ

そんな感じで色々議論がありますが、 なんとなく、VimFxというアドオンがフューチャーされてる感が強いです。

Vimperator: a Vim-like Firefox Hacker News

使い方にもよるかもしれませんが、たしかにVimperatorは癖が強いこともあるので。 簡単な操作だけを使ってる人は移る人も多そう。

ただもう結構長い間それなりに使い込んでる状態だともはやVimFxは別物です。

取り敢えず短期的には上のタブの実装だけ入れてVimperatorを使っていこうと思います。

Hit-a-Hintが使えないのは結構不便なんですが、検索技でしばらくはごまかしで。

ちょっと時間がかかりそうであればPentadactylを試してみたいと思います。

ただ、Firefoxの方針として、将来的にこの手のアドオンが全て使えなくなる可能性もあるので そういった時にはChromeに移るのかな、とも。。。

追記: 2017/01/30

Vimperator don’t work in Firefox Beta. Not e10s. · Issue #568 · vimperator/vimperator-labs

このスレッドで問題を修正するコードを既に書いてる人が居て、 現在はその人のレポジトリのフォーク版で見ることが出来ます。

上のスレッド中にそのフォーク版からxpiをビルドして使用するインストラクションもあります。

が、ちょっとやってみたんですが入れようとするとファイルが壊れてるからインストールできない、的なエラーが出ました。 やってみたのはMac上です。

また、インストラクション中にはprivate.propertiesの書き換えの話がありますが、 AMO_API_KEYAMO_API_SECRETManage API Keys :: Developer Hub :: Add-ons for Firefox で作成できましたが、UUIDの部分がちょっと分かってません。

Vimperator公式では[email protected]的なIDをふってるんですが、これを使おうとすると既に登録があってダメ、と言われるので やはり自分で用意しないといけないんですが、何が正しいのか。

適当に[email protected]とか書いて見たところmake signは通ったのでそういった適当な物でも良いのか。。。?

makeが通ってもインストールできなかったわけですが、 オリジナルのものを同様の方法でコンパイルしてインストールしようとしてみた所出来たので、 取り敢えずは適当なIDでも出来ることは出来る模様。

ただ、この方法だとxpiを一度上のDeveloper Hubに登録する形になるので 下手なものを作るのはちょっと気をつけた方が良いかも。(一応作ったものは削除しておきました。)

あと、

.../Profiles/xxxxxxxx.default-0000000000000/extensions/[email protected]

と言ったプロファイルのディレクトリの中にVimperatorのxpiの本体がありますが、 これをVimで直接開いて中のファイルを上の修正通り書き換えて見ようかと思ったんですが、 ちょっとでも書き換えてFirefoxを起動するとこのアドオンの署名がだめになってアドオンが無効化されてしまいました。

いずれにしろちょっと上手く行かなかったんですが、 直すべき所はなんとなく見つかってる様な感じなのですぐに新しいリリースが出ると期待してます。

追記ここまで

追記: 2017/02/01

このアップデートがそのまま公式のレポジトリに反映されています。

こちらを使ってビルドしてみた所上手くいきました。 (上のFork版のでもコードは全く一緒なのでおかしいな、と思ってもう一度やってみたら今度は問題なく出来ました。。。謎。)

追記ここまで

Sponsored Links
Sponsored Links

« Firefoxをリフレッシュした Cygwinのapt-cyg開発者が完全に開発終了を宣言 »

}