Installing Vimium

そういえばずっと以前にブラウザをvimっぽくする拡張の評価をいろいろして、最終的にcVimを選択したことがあった。それでずっとcVimを使っていたのだけど、メンテされなくなって随分経ち、いろいろと不具合が目立ってきたので別の何かに乗り換えることにした。

乗り換え先はタイトルの通りVimiumだ。VimiumはcVimに比べると

  • 内包している機能を直接呼び出すコマンドラインモードがない
  • 編集できる要素に対する拡張の余地がない

という明確なconsがあるが、それ以外はまあ何とかなる。軽いしよくできている。今までありがとうcVim…!

Have to press twice

Chrome 上で vi っぽいキーバインディングを再現するよ系の拡張としてcVIMを入れている。のだが、最近になって不思議な動作をするようになった。

:とかaとかtを押すと1行入力のプロンプトを求める状態になるはずが、なぜか2回左記のキーを押さないとプロンプトが出なくなってしまったのだ。不思議なことに従来通り1回押せば出るページもある。またそのページでも状態によって出たり出なかったりする。ランダム。

cVimのコミットもすっかり頻度が低くなってる今日この頃だけど、直るんだろうか。

cVim

Chrome に cVim を入れて常用ブラウザとしている。そして、多少 cVimrc をいじって、その中に編集可能な要素内で [cci]Ctrl+H[/cci] が押されたら、[cci]deleteChar[/cci] 関数を呼び出すような設定にしている。

…のだが、最近になってこれが動かなくなってしまった。キャレットの左の 1 文字が選択されるのだが、削除されない。選択されたままになる。

デバッガで追ってみると、選択した後にその選択範囲を削除しようとする箇所で、selection オブジェクトの type が Range であれば削除する…となっている処理がある。しかしナウい Chrome では、編集可能な要素の selection.type は Caret が返されるようなのだ。なので、削除処理がスキップされる。

まあ、そのうち直るんでしょう。cVim のソースは現在でもそれなりにメンテされている。

vi flavored browser UX #3

実は今現在最新の Firefox Developer Edition 46.0a では Keysnail が動作しないので、とても不便である。

せっかく Chrome 上での vi flavored なエクステンション群の評価をしたので、cVim をベースに uBlock、ScriptBlock 等を入れて色々整えてみた所割合快適な感じになってしまって、あれ? これ Firefox もう窓から投げ捨ててしまってもいいんじゃないの? という気になりつつある。

従来、どういうわけか Linux 上で Chromium(Opera も)を動かすとオムニバー上のキー入力が耐えられないほど重かった。また Chrome ではオムニバー周辺をエクステンションからいじることはほとんどできない。アドレスを編集するときに [cci]^F[/cci] [cci]^B[/cci] [cci]^H[/cci] 位は使いたいのだ。そのあたりが Firefox を常用ブラウザに選んだ理由だったのだが、オムニバーの代わりに cVim のコマンドラインを代用すれば今まで感じていた不満が何とかなってしまうわけで、そんなわけで 3 日に 1 回くらい落ちる Firefox Developer Edition を常用する理由がなくなってしまった。

vi flavored browser UX #2

地道に試しているのだが、インストールしたらページが hjkl でスクロールできたよやったねたえちゃん! という観点で見ると違いはそれほどわからない。なんとか違いを探してみると:

開発の活発さ
Vichrome と Hometype は github 上のコードの最終更新が数年前と、すでに中の人がやる気をなくしている感がある。それ以外は活発なようだ。

vi/vim の機能の理解
ほぼすべてのエクステンションにおいて gt/gT で次のタブ・前のタブに切り替えることができるが、この時カウントを前置できる・できないエクステンションがある。Vichrome はできない(というよりカウントの前置という概念がないように思える)。Hometype はキーボードからのアクティブタブの移動という機能自体がない。見た目のセンスはいいと思うけど、全般的に機能が足りない感じがする。

一方で機能の豊富さで言うと vrome が優れているように思える。ただあんまり機能が多くても全部使うわけでもないので、個人的には vimium くらいの規模が妥当かなという感じ。

コンテントスクリプトのサイズ
フロントエンド側の機能を提供するコンテントスクリプトはすべてのタブのみならずすべてのサブフレームでも読み込まれるので、できるだけコンパクトな方が良く、jquery に代表される汎用的なライブラリ等には頼っていないほうが好ましい。そうじゃないとなんちゃらまとめサイトみたいな iframe 広告だらけのページを開いた時に悲惨なことになってしまう。

Vimium、Vrome、cVim はそのようなライブラリに頼っていない。特に cVim は機能の大多数をページに差し込む iframe 内に置いているようでコンテントスクリプトは非常にコンパクトであり、アーキテクチャは最も洗練されているように思える。

まとめ
後発なだけに cVim が優れている感じだが、Vimium や vrome も悪くはない。Vichrome と Hometype は今のところ一休み状態かなーという感じ。Vichrome は [cci]/[/cci] [cci]?[/cci] コマンドなどで日本語対応というのが売りらしいので、そういう方向ではいいのかも。といいつつ今 [cci]?[/cci] を押して何も入力しないまま enter 押したら Chrome ごと固まっちゃったが……。