Firefox 57 (Quantum)のリリース予定(11/14)まで後1ヶ月を切りました。 57からはWebExtensionsベースではない旧式のアドオンが 使えなくなります。
一ヶ月前の今でも対応してないアドオンはたくさんあり、 いくつかのアドオンについては既に作者の人が 対応する予定は無い、と言い切っているものもあります。
そんな中、Firefoxを使う一番の理由であるVimperatorも旧式で 対応しようとはしているものの少なくとも11/14までには間に合いそうもありません。
ということでとりあえず現状代わりになりそうなものを探して ちょっと試してみました。
Vimium-FF
VimiumはもともとGoogle Chrome用の拡張機能として開発されたものですが、 最近Firefoxでも使えるバージョンを出しました。(多分Vimperatorが使えなくなるのを見越した対応。) WebExtensionsにも対応済です。
基本的な使い方はChrome版、Firefox版共通で、 キー設定などはアドオンの設定画面にあるCustom key mappingsに書き込むことで 変更が出来ます。
この欄の右側にあるShow available commandsを押すと設定一覧が出てきます。 さらに右下にあるShow advanced commandsを押すと隠れている設定も出てきます。
この一覧の中の括弧()内にあるのがコマンドで、 これをキーにマッピングすることで動作を設定できます。
map d removeTab
map <c-j> scrollDown
とか。
Controlを書く時に<>
で囲ってc-
で書きますが、
c
は大文字でも小文字でも大丈夫な様子。
Alt(Command)を使いたい場合はa-
と書くみたいですがMacでは上手く効きませんでした(Chromeでも)。
Visual Modeとかも一応設定がありますが
マップに関してはmap
のみで設定します。
設定を削除したい場合にはunmap d
とか。
全ての設定を一度削除したい場合にはunmapAll
が使えます。
VimiumはVimperatorに比べると単純な操作のキーマッピングだけをしているようなかんじですが、 Hit-a-Hintの機能が使えるのが1つ嬉しいところかと。
Vimperatorっぽくしてみる
差し当たりVimperatorの動作と違うキー設定になってて引っかかった部分が多かったので 出来る部分だけでもVimperatorっぽくした設定がこちら。
map <c-f> scrollPageDown count=2
map <c-b> scrollPageUp count=2
map y copyCurrentUrl
map <c-g> openCopiedUrlInNewTab
map F LinkHints.activateModeToOpenInNewForegroundTab
map t Vomnibar.activateInNewTab
map <c-o> goBack
map <c-i> goForward
map d removeTab
map u restoreTab
map <c-p> previousTab
map <c-n> nextTab
scrollPageDown
は半ページだけ動く様な動作だったので
1ページ動く様にcount=2
を追加。
この様に後ろにcount=<n>
を入れるとn回繰り返して行います。
現状での問題点
こんな設定でやってみましたがいくつか出来ないことが。
copyCurrentUrl
が効かない(Firefoxのみ)。Yanked ...
みたいなメッセージが右下に出るにも関わらずクリップボードに入ってない。
openCopiedUrlInNewTab
の動作がおかしい(Firefoxのみ)。- クリップボードにURLがあっても単に空白ページが新しく出来る。
- 特定のページで操作が効かない。
- 設定ページなどではVimperatorも効かないので仕方がない部分はある。
- ただし、空白ページ(about:blank)等でも効かない。
- 空白ページを作ってからとか全てのタブを削除していって残った空白ページで
o
で開く、とかが出来ない。
- 空白ページを作ってからとか全てのタブを削除していって残った空白ページで
- ページごとに設定を無効化する設定があるがそれを全て無くしても特定のページで操作できない。
- Firefox Addon、Chromeの拡張のページなどで効かない。
- さらに何故かFeedlyのページでも効かない(Firefoxのみ)。
- Gmailのページでは設定しなければ効く。
o
などで開くページのURLの書き換えが出来ない。- 検索の動作が不安定(Firefox)。
- 検索ワードを入力する時に、特に日本語を入力すると変なタイミングで一部だけ変換されたりする。
- たまに検索しようとしても文字が入力できない時がある。
<RETURN>
をマップできない。
と言った感じがとりあえずの感想。
URLの書き換えが出来ない、というのはChromeだとo
を押すと
こんな感じで画面の真ん中情報に書き込み欄が出てきて補完候補が出ますが、 候補をTabで選んでも書き込み欄には反映されません。 選んだ状態でReturnを押せばそのURLに飛ぶことが出来ますが、 Deleteとかを押すと最初に書き込んだ文字列が消されるだけです。
Vimperatorや下に書くChromeの拡張のcVimだと
こんな感じで補完候補をTabで候補を選択した時、選択行にあるものが書き込み欄に入ります。 この状態からDeleteしたり文字を入力してURLを改変することが可能です。
Firefoxのみで上手く言ってない操作に関しては今後のアップデートで 治る可能性もありますが、 両者で出来ない機能、というのはそもそもそういう動作を目指してなかったりすることもあるかもしれないので そのままの可能性が高いです。
Vimiumでは出来ないVimperatorの動作
まあ沢山あるわけですが、差し当たり
qmark
機能が使えないsilent qmark m https://mail.google.com
みたいな設定をしておいてgom
と押すとGmailのページに行ける機能。(gnm
なら新しいタブに開く。)
multi_requester.js
が使えない。- 辞書ページなどにキーワードを与えてその結果をオーバーレイで表示してくれる拡張機能。
copy.js
が使えない。- JavaScriptなどでページの情報を取ってきてクリップボードに入れてくれる機能。
- ブックマークレット代わりに使える。(
qmark
と違ってクリップボードに直接値を入れたい時に便利。)
- コマンドが使えない。
restart
とか色々。
などなど。
Vimiumで出来ることはHit-a-Hintを除いて すべて通常のFirefoxのキーボードショートカットを変更すれば出来ることです。
open
コマンド等もアドレスバーにフォーカスを当てれば良いだけ。
- Mac: Command-LもしくはF6
- Windows: Control-LもしくはAlt-DまたはF6
他の移動操作などは簡単な割当で出来ます。 なのでMacならKarabiner-Elements、WindowsならAutoHotkeyと言った外部アプリを使って 当てはめる事も可能です。
これらを使えば空白ページや設定ページでも動作を当てる事が可能なのでむしろ便利にできそうです。
qmarks
の機能なども実装しようと思えば出来ると思います。
出来ないのはHit-a-Hintの機能で、現状これだけを出来るアドオンというのもないので とりあえずVimiumを入れてこの機能だけ使う、というのもありかもしれません。
他の候補
Saka Key というアドオンが色々と設定できるアドオンとして候補になると思います。
こちらもWebExtensionsに対応済です。 また、このアドオンもChromeの拡張機能としても使える様になっています。
Hit-a-Hintとかが使え、ページ移動などの一通りの事は出来ますが、 現状openコマンド的な事が出来ません。
Key command to focus omnibar · Issue #36 · lusakasa/saka-key
通常のショートカットキーで出来るので簡単にできそうなものですが何やら難しいようです。 他のアドオンとかでは見た目的に敢えて独自の入力欄を作っているんだと思ってましたが、 実は技術的な理由でアドレスバーにフォーカスすることがアドオンの中では出来ないから 作らざるを得ない状況があるようです。
ドキュメントにはCommands
という項目があってJavaScriptを使って
色々書いていけそうな雰囲気はありますが
少なくとも通常の設定画面からどうこう出来る様なものではないみたいです。
ということで使い勝手という点では今のところVimiumからopenコマンドを引いた感じなのでちょっと難しいです。
それ以外だと
VimFx: https://addons.mozilla.org/ja/firefox/addon/vimfx/
というアドオンもあって、一時期Vimperatorが使えなくなっていた頃にちょっと代替え用として出てきてましたが
残念ながらこのアドオンもWebExtensionsには対応してないので57以降は使えなくなります。
Chromeなら
ChromeであればVimiumの他にcVimという拡張機能があります。
こちらはHit-a-Hintは勿論、qmarks
の機能も持っています。
上にも書いたとおりopenコマンドなどでの操作も便利になっています。
また、設定ファイルの書き方がよりVimっぽくなっていてやりやすいです。
あと、ちょっと今触ってみて気づいたところだと、新しいタブを開く、をURL無しな状態でcVimでやると cVimが作った特殊な新しい空白ページを開き、そのページ上だとcVimは有効になります。 (通常の空白ページではVimium同様操舵できない。)
Vimium - Chrome ウェブストア: https://chrome.google.com/webstore/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb: ユーザー262517人cVim - Chrome ウェブストア: https://chrome.google.com/webstore/detail/cvim/ihlenndgcmojhcghmfjfneahoeklbjjh?hl=ja: ユーザー27223人
Chromeストアで見てみるとVimiumの方が一桁ユーザー数が多いみたいですが、 レビューを見てると前までcVimの方が結構不安定だったのかな、といった感じです。 GitHubのスターでもVimiumの方が数倍多くなっています。
ただ、最近のレビューではVimiumから移った、という人も結構居てcVimの方が良さそうに見えます。
実際に出来ることは圧倒的にcVimの方が多いですし、上にも書いたとおりVimiumは単位ショートカットキー設定をしているに過ぎない程度なので 使うのであればcVimでないと意味が無いかな、という感じすらします。
また、両者ともにGitHubを見ていると最近も結構アクティブに更新しているみたいなので 今後の進化も見ておく必要があるとは思います。
まとめ
色々見てみればみるほど厳しい現実が待っている感じです。
なるべく現状に近い形で使い続けたいのであれば、 Chromeに移ってcVimを使う、というのが一番簡単に出来る事になりそうです。
ただ、Firefox 57でせっかくFirefoxが速くなるのにそのタイミングで移るのもなんか悔しい感じもします。
アドオンとかは作ったことが無いのでどうしたもんだか分からないのですが
Karabiner-ElementsやAutoHotkeyを使ってqmarks
とかの機能を含めた動作をある程度再現することは出来るかと思いますが、
Hit-a-Hintは別途必要なのでとりあえずVimiumを入れるとか。
困った。