Vichrome 0.4.1リリースしたので紹介
つーかリリースしたのは一昨日だけども。
Vichromeはvi(vim)風のキー操作を実現するGoogle Chrome Extensionです。
前回の記事:Vichrome : vim風インタフェースを実現するChrome Extension
最初のバージョン0.1をリリースしてから約2週間くらい?気がつくともうバージョン0.4になってたので、新規追加した機能を紹介。 バグ修正中心だったから大した量ではない。
<NOP>
実装するのを忘れてたので急遽0.2で実装。 Vichromeのキーバインドを無効化するだけです。
nmap <C-f> <NOP>
重要なのは、Vichromeのキーバインドを無効化することで既存の(Chromeの、あるいは特定のWebページだけで有効な)キーバインドが有効になることです。 上の例だとPageDownが無効になる代わりにChromeのデフォルトの検索が有効になります。(Macは違うよ。<M-f>だから。)
:OpenNewWindow
個人的にはそれ程需要があるとは思えないですが、一応実装しました。基本的に僕は1つのウィンドウにタブをいっぱい開くので(みんなそうだよね?)。 このコマンドで少し珍しいのは–popオプション。 今開いてるページのタブを新しいウィンドウに移動させます。 特に意味もなくデフォルトでgpにキーバインドを割り当ててみましたwww使わないのにwww 元のウィンドウからポンっと飛び出すイメージだから–popオプションwwwまあ僕は使わないけどwww
:OpenNewTabの新オプション
僕が最も多用するコマンドなので、いくつか新しいオプションを追加しました。
--background : 新しいタブをバックグラウンドで開く
--pinned : 新しいタブをピン状態で開く
これに加えて、:OpenNewTabコマンドが複数のURLを扱えるようにしました。
:OpenNewTab --background https://mail.google.com/mail https://twitter.com/
みたいに。Chrome起動時にいつも開くページが決まってる人は立ち上げコマンドとしてAliasしておくと便利かもしれません。
:Alias
動的にエイリアス設定を変えようと思う人はあまりいないかもしれませんが、ないよりはましだろうということで。使い方はオプションページに書くのと同じです。最初が大文字なこと以外は。
pagecmd
ここまではおまけ。ここからが本番。pagecmdは超絶便利です。これは指定したURLのページだけで有効になるnmap/imap/aliasを定義することができます。オプションページのキーマップ設定で使えます。文法は
pagecmd [target url] [nmap/imap/alias] [argumets] ...
target urlには有効になるウェブページを指定します。Ignored URLsと同様にワイルドカードが使えます。 以降は通常のnmap/imap/aliasと同じ。特定のページだけ有効にしたいキーバインドというのはあまりないかもしれないですが、特定のページだけ無効にしたいキーバインドというのは結構あります。 そのページ自体が便利なキーバインドを持ってる場合ですね。例えば
pagecmd http*://twitter.com* nmap f <NOP>
pagecmd http*://twitter.com* nmap r <NOP>
twitterのwebってたくさんキーバインドがあるんです。上の例はその一部でfがfavorite、rがreplyです。 fとrのVicromeキーバインドをtwitterでは無効化することで、これらのvery usefulなコマンドが使えるようになります。
もう一つ重要な点として、pagecmdはIgnored URLsよりも優先度を高く実装しています。なので、Ignored URLsに
http*://www.google.co*/reader/*
と追加しても、pagecmdで
pagecmd * nmap <C-l> :MoveToNextTab
pagecmd * nmap <C-h> :MoveToPrevTab
これで、すべてのサイトでタブ移動のキーが有効になります。 Ignored URLsが実はIgnoredじゃないって仕様的にどうよっていう葛藤はありましたが、現実問題として特定のサイトで特定のキーだけ有効にさせる機能を実現するにはこれが最もシンプルという結論に至りました。
:GoLinkTextSearchMode
最新0.4.0で追加したコマンド。意外と便利。 リンク内のテキストだけ検索するモードです。 それ以外の動作は全て通常検索を踏襲しています。 ヒットした検索結果には自動でフォーカスが当たるのでエンターキーを押すだけでリンクが開けます。
f-Mode(HIT-A-HINT)があればいらないんじゃんないか、と実装する前は思ってましたが、f-Modeとは少し目的が違うということが使ってみてはじめてわかりました。 f-Modeを使用するときはオープンしたいリンクが明確に決まってます。 「今から俺はこれを開くぞ」というときはf-Modeが最適でしょう。 LinkTextSearchModeはむしろ「あれ、このページからあのページにリンクあったよな。。」 みたいなアバウトな情報からリンクを探すときに非常に便利です。
このコマンドはデフォルトで'a'キーにバインドしました。もちろんHTMLの<a>タグが語源です。
以上。
ちなみに既知のバグでクリティカルかつ修正目処が立たないのが、
- GMailのページで一切Vichromeが動作できない。
- IFrame内のコンテンツが操作(スクロール、検索、f-Mode全部)出来ない。
- Amazonとか、一部のサイトの一部のリンクがf-Modeの候補にならない。
これくらいだろうか。なんとか修正したいね。
これから少しの間VichromeをCoffeeScriptで作りなおそうプロジェクトが忙しいので新規機能の実装は少し先になるかもしません。