Firefox拡張:FirefoxをVim風のキーバインドで操作するVimperator
Vimperator拡張(最新バージョン0.4.1)は、Mozdev.orgから入手することができる。インストールするためには、Mozdev.orgでVimperator拡張の最新バージョンのリンクをクリックすればよい。ただしその際、拡張のインストールを許可するサイトのリストにURLを追加する必要があるかもしれない。許可されているリストにURLが入っていない場合にはFirefoxのページ上部にそのことを伝える表示が出るので、その指示に従えば良い。
Vimperatorをインストールした後Firefoxを再起動すると、Firefoxのメニューバーとロケーションバーとステータスバーが表示されなくなっていることに気付くことだろう。Vimperatorではデフォルトのステータスバーは独自のステータスバーに置き換わり、コマンドライン、現在表示中のURL、現在表示中のタブ番号、ページ全体における現在の表示位置などが表示される。「現在表示中のタブ番号」というのは、例えば5つのタブを開いていて、そのうちの2つめのタブを表示している場合には、ステータスバーに[2/5]
と表示される。「ページ全体における現在の表示位置」というのは、ページの最上部を表示している場合にはTop
、最下部を表示している場合にはBot
、ページ半ばの部分を表示している場合にはページ全体に対するおおよそのパーセンテージが表示される。
前述したようにFirefoxのツールバーはVimperatorでは表示されなくなってしまうのだが、Firefoxのツールバーの機能のどれかに関して無しで済ますことはできないという場合にも問題はない。Vimと同様に:
に続けてコマンドを入力することで、コマンドモードでコマンドを入力することができるので、guioptions
の設定を変更してロケーションバーやメニューバーを表示させるためには、次のようなコマンドとEnterを入力すれば良い。
:set guioptions=mT
上記のコマンドを実行すると、ロケーションバー(T
で指定)とメニューバー(m
で指定)が再び表示されるようになるはずだ。なおブックマークバーを表示させるためにはb
、Firefoxのデフォルトのステータスバーを表示させるためにはs
を追加して指定すれば良い。
操作
Vimやviのユーザであれば、ほとんどのVimperatorのキーバインドにすぐに馴染むことができるだろう。標準的なvi/Vimの移動用のキーは期待通りに動作する。つまり、k
で上に移動、j
で下に移動、h
で右に移動、l
で左に移動する。また、gg
でページ最上部に移動、G
でページ最下部に移動することができる。
Googleのようにテキストフィールドにカーソルが移動するページでは、コマンドモードではなく挿入モードになる。この場合、移動用のキーを使うか検索を開始すれば、テキストフィールドへのテキスト入力を終了することになる。またTab
を入力するとカーソルを次のテキストフィールドに移動することができる。またEsc
を入力するとコマンドモードになる。
ページの閲覧に関して言うと、Vimperatorには、閲覧の操作を非常に楽にキーボードから行なうことができるようになるコマンド一式が揃っている。すべてのコマンドをここで紹介することはできないが、手始めに覚えると便利なものを以下に示す。
-
gt
またはCtrl-n
:次のタブに移動する -
gT
またはCtrl-p
:前のタブに移動する -
gh
:ユーザのホームページに移動する。 -
gH
:新しくタブを開いてユーザのホームページに移動する。 -
gu
:一つ上のディレクトリに移動する。例えばhttp://www.example.com/blog/にいるならhttp://www.example.com/に移動する。 -
H
:ブラウザ履歴の一つ前のページに移動する。 -
L
:ブラウザ履歴の一つ後のページに移動する。 -
:o http://www.example.com/
:http://www.example.com/を開く。 -
:o 検索語
:デフォルトの検索エンジンを使用して検索語を検索する。 -
:o ファイル名
:Firefoxでローカルのファイルを開く。 -
:q
:現在表示中のタブを閉じる。現在表示中のタブが一つだけの場合はFirefoxを終了する。 -
zi
:現在表示中のページの文字の大きさを25%拡大する。 -
zI
:現在表示中のページの文字の大きさを100%拡大する。 -
zo
:現在表示中のページの文字の大きさを25%縮小する。 -
zO
:現在表示中のページの文字の大きさを100%縮小する。 -
zz
:zz
だけで使用するとページを100%の大きさにリセットする。数値を付けて入力すると、25%から500%の間で自由に文字の大きさを設定することができる。したがって例えば「105zz」と入力すれば、通常の文字の大きさの105%の大きさに設定することができる。
Vimperatorにはまた、「ヒント(Hint)」モードと呼ばれる複数のモードがある。ヒントモードでは、リンク先に移動するために使用することのできるショートカットを示した黄色のラベルが各リンクに付けられる。この機能はKonquerorのキーボード操作のための機能(翻訳記事)によく似ている。
QuickHintモードにするためにはf
を入力する。すると各リンクにラベルが付けられるはずなので、ラベルに示されているショートカットを入力すればリンク先に進むことができる。したがって10個程度のリンクを含むページの場合であれば、各リンクにはA、B、C、D……というヒントが書かれたラベルが表示される。そこで例えばa
と入力すると、そのリンク先のページが表示される。またA
と入力すると、バックグラウンドで新しいタブを開いてリンク先のページが読み込まれる。
さらにそれだけには留まらず、;
を入力すればExtendedHintというモードを使うこともできる。ExtendedHintモードでも同じラベルが表示されるが、ショートカットを入力してもラベルがハイライトされるだけになる。しかしそうしてリンクを選択した後は、y
と入力してURLをコピーしたり、Y
と入力してアンカーテキスト(リンクテキスト)をコピーしたりすることなどができるようになる。
Vimperatorでウェブを閲覧する
Vimperatorの最もパワフルな機能の一つは、Firefoxの履歴の操作だ。:history
コマンドを使用すれば、通常のページだけでなくローカルファイルも含めた、最近閲覧した10個のページのURLを表示することができる。
履歴機能はデフォルトでは10ページを表示するだけなので、2日前に閲覧したページを探している場合にはあまり役に立たない。そこで、検索語(探しているページのURLやページのタイトルに一致させる文字列)を:history
コマンドと組み合わせて利用すると良い。例えば過去に閲覧したページの中で、タイトルかURLに「craigslist」という文字列が含まれているページを見つけたいという場合には、:history craigslist
というコマンドを利用すれば、ブラウザウィンドウの最下部に履歴検索結果一覧ウィンドウが開かれ、ページのタイトルかURLに「craigslist」に一致する文字列が含まれているページのうち最近訪問した10個のページが表示される。
ページを閲覧するためには、履歴検索結果一覧ウィンドウ内の履歴のエントリをダブルクリックすれば良い(ちなみにこれについてキーボードから行なう方法は今のところは提供されていない)。検索結果を閉じるには、:pc
か、またはより覚えやすく:pclose
を入力する。
ブックマークの使用について言うと、ブックマークを追加するには:bmadd
コマンドを使用し、ブックマークを削除するには:bmdel url
を使用する。ただし:mbdel
を使用する際には、URLに部分一致するブックマークがすべて削除されるので詳細に指定する必要がある。
ブックマークを表示するには:bm
コマンドを使う。また:bm!
コマンドを使えば、ブックマークをすべて表示したページが開かれ、ページの最上部に検索バーが表示される。ヘルプテキストによると、:bm 式
を実行すればブックマークの中で検索を行なうことができるはずなのだが、私が試したところエラーが返ってきただけだったので、おそらくまだ実装が完了していないのではないかと思う。
検索
FirefoxではCtrl-f
を入力するとステータスバーの近くに検索用ダイアログがポップアップするが、Vimperatorを使用している場合にCtrl-f
を入力するとVimと同じ動作が行なわれて、1画面分先に進む。Vimperatorで検索を行なうためには、標準のVimの検索用キーバインドである/
を使用することができる。ただしカーソルより前のテキストの検索を行なうキーバインドである?
は認識されなかった。
検索語を入力すると、(一致する文字列があれば)最初に一致する文字列がある場所に移動する。Vimとは異なり、検索用フィールドから抜けるためにはEsc
を入力する必要がある。検索語に一致する文字列をさらに見るためには、n
を入力して前方に、N
を入力して後方に検索を進めることができる。
検索語はすべてのタブで共通なので、たとえば1つめのタブ内でXYZを検索して、次にgt
を入力して2つめのタブに移動しても、2つめのタブ内で同じ検索語を検索することができる。
ヘルプ機能
VimperatorのヘルプはVimと同様に、:help
と入力することでいつでも表示することができる。:help
コマンドを実行すれば、Vimperatorヘルプ文書のローカルのコピーが表示される。Vimperatorヘルプ文書では、Vimperatorで使用可能なオプションやキーバインドやコマンドがすべてカバーされている。
また、特定のコマンドに関するヘルプを直接的に表示することもできる。例えば:open
コマンドのヘルプを見たい場合には:help :open
とすれば良い。ただしこの場合の問題点は、利用したいコマンド名をすでに知っていなければならないという点だ。リファレンスとして使用するには問題ないが、何かをしたいときにどのようなコマンドを使えばいいのか分からないという場合にはあまり役に立たない。
終了
Firefoxを終了するための方法はVimと同様にいくつか用意されている。:q
を入力すると、表示しているタブが1つである場合にはFireforxが終了する。複数のタブを表示している場合には、表示中のタブのみが閉じられる。
:qall
またはZQ
を使用するとFirefoxが終了し、セッションの履歴がクリアされる。Firefoxを終了したいが後程同じセッションを再開したいという場合には、その代わりにZZ
を使用すれば良い。
Firefoxをすぐに再起動したい場合には、:restart
を使用することができる。
オプションの設定
:set
を使用してVimperatorのオプションを変更できることについてはすでに説明した通りだが、Vimperatorのヘルプ文書で、設定可能なオプションの全リストを見ることができる。
また、設定ファイルを使用してデフォルトを設定することもできる。そのためには、自分のホームディレクトリの中に.vimperatorrcという名前のファイルを作成しておけば良い。そうしておけばVimperatorが起動時にそのファイルを確認するようになる。設定ファイルを使用することの利点は、Firefoxを起動する際にオプションをリセットすることができることだ。例えばFirefoxのツールバーを開きたくない場合には.vimperatorrcでそのように設定しておくと、前のセッションで一時的にツールバーを開いていた場合であっても確実に、Firefoxを再起動したときにはツールバーが開かないようにすることができる。
Vimperatorの設定ファイルで実現できることとできないことについてはまだあまり文書化されていないが、.vimperatorrcファイル編集用の文法ハイライトのためのVimの文法設定が用意されている。なお、Vimperatorの開発者Martin Stubenschrott氏は、Vimperator 0.5でAPIの変更と文書化を予定しているためユーザがスクリプト作成を行なうのはVimperator 0.5がリリースされた後にするべきだと述べている。またその時には:map
も利用可能になるとのことだ。
他の拡張との共存
Vimperatorは素晴らしい拡張だが、現時点ではFirefoxの機能や拡張の一部や、Vimperatorのキーバインドと衝突する操作キーを持つウェブサイトに関して問題になることがある。
例えばVimperatorを使用しているときには、guioptions
を使用してロケーションバーを表示させるようにしていても、ロケーションバーの中のフィード登録ボタンが機能しなくなるようだ。リロードボタンについても同じことが起こり、Vimperatorを有効にするとグレー表示になる。また、Firefoxのデフォルトのリロード用ショートカットであるF5
が機能しなくなる。ただし、代わりにr
を使うことはできる。残念ながらVimperatorにはフィード登録のためのショートカットがなく、Vimperatorを有効にしているときには、Firefoxのフィード登録機能を使用して簡単に新たなフィードを登録することができない。
またVimperatorではデフォルトのステータスバーが表示されないため、ステータスバーを使用する拡張はすべて影響を受ける。例えばGoogleのNotebook拡張の場合、まったく使えなくなってしまうわけではないが、ステータスバーにあるNotebookのアイコンをクリックすることでノートブックを開くことができなくなってしまう。それでもFirefoxのコンテキストメニュー経由であれば、ノートを追加するための「Note This(ノートに追加)」メニュー項目を使用することでノートブックを開くことはでき、Google Notebookのポップアップも問題なく機能するのだが、ステータスバーのボタンを使用することはできなくなる。なおFirefoxのデフォルトのステータスバーは、:set guioptions=s
を使用することで表示させることができ、Vimperatorのステータスバーの上部に表示される。
さらにVimperatorのキーバインドは時折、 ウェブページが設定しているキーバインドと衝突することがある。私はしばらくの間、Vimperatorの操作キーとGoogle Readerの操作キーが衝突するためGoogle Readerを利用するかVimperatorを利用するかの選択を迫られているのだと思っていた。しかしVimperatorにはキーバインドの衝突に対する解決法が用意されていて、I
を入力すればVimperatorのキーバインドを無効にすることができ、またEsc
を入力すれば再びVimperatorモードに戻すことができる。これによりフィード登録ボタンにあるような不具合も解決できるというわけではないが、少なくともVimperatorをアンインストールしたり無効にしたりすることなく、フィードリーダのようなアプリケーションを使用することはできるようになる。
概してVimperatorのvi風のキーバインドはFirefoxに驚くほどよく馴染む。本当に必要になったとき以外にマウスを使用するのを嫌う筋金入りのVim常用者なら、Vimperatorを利用することでFirefoxを使うのがさらに楽しくなるだろう。