Firefoxのプラグインでこれだけすごいと思ったのはFirebug以来。
VimperatorはFirefoxの基本的な操作をすべてキーボードから行えるようにしてくれるプラグインです。
その名のとおりテキストエディタのVimをFirefox上で再現したような作りになっており、非常に柔軟なカスタマイズも可能です。
記事投稿現在の安定版はFirefox2.x向けのVersion 0.5.3。(Firefox3.xへ向けた0.6.xが開発中らしい)
インストールや有効/無効化などは通常のアドオンと変わらないので簡単に試してみることができます。
ただし、ブラウザの操作方法ががらりと変わりますので、慣れるまではかなり苦労するかもしれません。
ここでは、これまでに私が調べた内容についてまとめておきます。
Vimperatorの基本的な使い方
まずはVimperatorを使い始めるに当たって参考にさせていただいたページを紹介します。
基本的な使い方はこれらのページと、ヘルプで覚えることができます。
simplicityroad: Vimperator Keyboard Shortcuts Visual She
おもなキー操作が図の形で紹介されています。操作のイメージが掴みやすいのでおすすめ。
Open Tech Press | Firefox拡張:FirefoxをVim風のキーバインドで操作するVimperator
訳文なのでちょっと読みづらいですが、比較的詳しく機能を紹介している記事です。なお、現行バージョンではset guioptionsのs(ステータスバー)は定義されていないため設定しようとしてもエラーになります。
2007-06-29 - Muibrog
一通りの操作方法について。
VimperatorでFirefoxをキーボードで操作してしまおう! - Cross System blog
こちらも操作について紹介されいています。
Vimperator - EthnaWiki
より使いこなしてゆくための基礎知識。
その他よく使いそうなコマンドの紹介など。
Vimperator入れてみた - tomisima::memo
Vimperator凄い!Firefoxがvimキーバインドで操作できるよ - otsune’s SnakeOil
Vimperatorが素晴らしすぎる件 - nothing but trouble
vimのような操作をfirefoxで - Vimperator | jigelog
クイックヒントの使い方
私の方からはVimperatorの大きな特徴の一つでもあるリンクの開き方について紹介します。
リンクを開くには、「f」キーのクイックヒントか「;」キーの拡張ヒントを使用します。
クイックヒント
クイックヒントは一つのリンクだけを指定して開くシンプルな機能です。
「f」キーを押すと、表示されている画面内の各リンクに英字のラベルが付き、これをキーボードから入力することでリンクが指定できます。
リンクを指定する際、小文字で入力するか大文字で入力するかで開く先を選べます。
小文字で指定:リンクを現在のタブで開く
大文字で指定:リンクを新しいタブで開く
「Esc」キーを押すとヒントの表示が消えます。(ちなみに、デフォルトではヒントは赤色で表示されます。私は後述の設定により青色に設定しています)
拡張ヒント
拡張ヒントでは、ラベルの英字を入力してもすぐにはリンクが開かず選択状態となり、そのまま「,」区切りで複数のリンクを指定することができます。
リンクの選択後に以下のコマンドで処理を選べます。
y:リンク先URLをコピー
Y:リンクテキストをコピー
o:現在のタブで開く
t:新しいタブで開く
s:リンク先を保存
a:リンク先を保存(prompting for save location)
<C-w>:個別の新しいウィンドウで開く
検索バーいらずのoとt
標準機能で非常に重宝するのがこの「o」と「t」。「o」キーを押すとコマンドラインに「:open 」と表示されて入力待ちになります。
この状態で検索したい文字列を入力するとデフォルトの検索エンジン(Google)での検索が行われ、検索結果ページに飛びます。
「t」キーは同じく「:tabopen 」となり、検索結果が新しいタブで表示されます。
そしてこれらの検索履歴は「↑」キーでたどることができ、途中まで入力した後で「↑」を押せばそれに続く内容が履歴から補完されます。
なお、「:open 」および「:tabopen 」に続けてURLを入力した場合はそのURLが直接開きます。
vimperatorrcの設定
Windowsの場合、Vimperatorの設定は環境変数HOMEで指定したディレクトリに_vimperatorrc(もしくは.vimperatorrc)を作成し、そこに記述します。
なお、環境変数HOMEが設定されていれば「:mkvimperatorrc」コマンドでvimperatorrcを自動作成できます。
以下に私の設定を載せておきますので、よければ参考にしてください。(Version 0.5.3向け)
特にh/lでのタブ移動などはお勧めです。(標準でh/lは横スクロールに割り当てられています)
" 0.5.3 (created: 2007/12/21 19:26:07)
" vim: set ft=vimperator:
"+----------------------------------------------------------------------------------------+
" 基本設定
"+----------------------------------------------------------------------------------------+
"ブラウザタイトルの変更
set titlestring=Firefox
"メニュー/ツール/リンクを表示
set guioptions=mTb
"ページ全体で検索語を強調表示
set hlsearch
"ビープ音を鳴らさずビジュアルベルを使用
set visualbell
"ビジュアルベルを無効化
set visualbellstyle=display:none;
"ヒントのスタイルを指定
set hintstyle=z-index:5000; font-family:monospace; font-size:12px; color:white; background-color:blue; border-color:ButtonShadow; border-width:0px; border-style:solid; padding:0px 1px 0px 1px; position:absolute;
"ヒント(フォーカス時)のスタイルを指定
"set focusedhintstyle=z-index:5000; font-family:monospace; font-size:12px; color:ButtonText; background-color:ButtonShadow; border-color:ButtonShadow; border-width:1px; border-style:solid; padding:0px 1px 0px 1px; position:absolute;
"+----------------------------------------------------------------------------------------+
" キーマップ設定
"+----------------------------------------------------------------------------------------+
"yで選択範囲をコピー
map y :echo 'Yank!'<CR>Y
"j/kの移動量を5倍に
map j 5<C-e>
map k 5<C-y>
"<BS>で「戻る」
map <BS> H
"<A-Left>/<A-Right>かh/lでタブ移動
map <A-Left> <C-p>
map <A-Right> <C-n>
map h <C-p>
map l <C-n>
"<A-Up>でその他のタブを閉じる
map <A-Up> :tabonly<CR>
"<A-Down>で現在のタブを閉じる
"map <A-Down> d
"<S-Left>/<S-Right>で現在のタブの位置変更
map <S-Left> :tabmove! -1<CR>
map <S-Right> :tabmove! +1<CR>
"sで現在のページを保存
"map s :saveas<CR>
"<A-r>でFirefoxを再起動
map <A-r> :restart<CR>
"<A-h>でヘルプを表示
map <A-h> :help<CR>
"+----------------------------------------------------------------------------------------+
" プラグイン設定
"+----------------------------------------------------------------------------------------+
"<C-Del>で検索語の強調表示をトグル(toggleHighlight.js)
map <C-Del> :toggleHighlight<CR>
"<F2>でメニューバーをトグル(toggleToolbar-0.5.1.js)
map <F2> :toggleToolbar<CR>
"<A-g>でGreasemonkeyをトグル(gmperator.js)
map <A-g> :gmset!<CR>
"bではてブのコメントを表示(hatenabookmark_show.js 一部修正)
map b :hbinfo<CR>
"<C-S-c>でタイトルとURLをコピー(copy.js)
map <C-C> :copy titleAndURL<CR>
"<S-s>でBloglinesに登録(commandBookmarklet.js)
map S :Sub<CR>
"+----------------------------------------------------------------------------------------+
" 未プラグイン化スクリプト
"+----------------------------------------------------------------------------------------+
"Show feed-button to statusbar
"http://d.hatena.ne.jp/teramako/20071205/p1
:javascript <<EOF
(function(){
var feedPanel = document.createElement('statusbarpanel');
var feedButton = document.getElementById('feed-button');
feedPanel.setAttribute('id','feed-panel-clone');
feedPanel.appendChild(feedButton.cloneNode(true));
feedButton.parentNode.removeChild(feedButton);
document.getElementById('status-bar').insertBefore(feedPanel,document.getElementById('security-button'));
})();
EOF
"<C-c>で選択範囲のコピーと読み込みの中断
"http://d.hatena.ne.jp/teramako/20071128/p2
:javascript <<EOF
vimperator.mappings.add(new vimperator.Map(vimperator.modes.NORMAL,
['<C-c>'],
function() {
var sel = window.content.document.getSelection();
if (sel) {
vimperator.copyToClipboard(sel);
//vimperator.echo('Yanked: '+sel);
vimperator.echo('Yank!');
} else {
BrowserStop();
vimperator.echo('Stopped loading !');
}
},{
shortHelp: 'Copy selected text or ',
help: 'The currently selected text is copied to the system clipboard.<br/>' +
'If selected text is none, stops loading the current web page.'
}
));
EOF
設定にあたっては以下のページを参考にさせていただきました。
環境設定ファイル vimperatorrc の詳しい手順 - k0yの日記
firefoxをvimのキーバインドで操作する「vimperator」を入れる - カサヒラボ
Feedボタンをステータスバーに移動 - hogehoge
Ctrl + c で選択範囲のコピーと読み込みの中断 - hogehoge
ぼちぼち散歩 Firefoxをこう使ってます的な何か その5
Vimperatorrc編集用Vim設定
Vimユーザ向けには公式サイトで専用のシンタックスファイル「vimperator.vim」が配布されています。
これをダウンロードして~/vimfiles/syntaxに入れておくと、vimperatorrcのファイルタイプでキーワードが自動ハイライトされるようになります。
また、私はNERD_commenter.vimを使っているので、829行目あたりに以下を追加してコメントアウトのトグルができるようにしました。
elseif a:filetype == "vimperator"
call s:MapDelimiters('"','')
まとめ
まだまだ奥が深いです。
ただし開発途上ということもあり不便な点も残ります。(起動が遅かったり、historyの選択がマウスだったり、IMEのON/OFFに悩まされたり)
このあたりはFirefox3およびVer0.6以降と先行する方々のハックに期待したいところ。
特にこのプラグインはマウスの使えないモバイルノート環境で劇的な効果を発揮するものと思っています。
現在のところ他のブラウザでここまでものは見たことがないので、Firefoxのキラーコンテンツの一つになるかもしれません。(GreasemonkeyがJavaScriptによってページに対するカスタマイズを可能にしたように、Vimperatorは同じくFirefox自体のUIをカスタマイズ可能にします)
追記@2008-04-06
ナレッジエース - Vimperator 0.5.xで使えるプラグインの紹介
追加でVimperatorプラグインについての記事を書きました。
Firefox 3.0b5とvimperator0.6とAutoPagerizeとLDRizeとMinibufferとldr_cooperation.jsを組み合わせると快適過ぎる - otsune’s SnakeOil - subtech
0.6はさらにすごい便利そうです。目指せネットウォッチ2.0。
追記@2008-05-02
Vimperatorのヘルプを日本語にしてみたよ - kei-os2007 against the machine!!
タイトルの通り、ヘルプが日本語化されています。ありがたや。
Help Vimperator0.6pre - Introduction
こんなところにも日本語情報が。
Comments»
このへんはFirefox3.0b5 vimperator0.6preを使っている現在でかなり解消されています。(Firefox3.0がリリースされた時点でvimperatorも0.6.xが1.0となる予定)
]] で次のページのリンクを自動検知するとか、さらに強力な機能もあったり。
otsuneさん情報ありがとうございます。次期バージョンで解消されているとのこと、うれしいですね。Vimperatorをお使いの方はほとんどが早々にFirefox3に移行されてしまったようで、私も6月(?)のFirefox3リリースが楽しみです。(一度2と3の同居にチャレンジしたのですがプロファイルの切り替えが面倒で挫折しましたorz)
はじめまして、いつも勉強させていただいております。
IMEのON/OFの問題は厄介ですね。
私はIME and DiMENSiONというアドオンで解決しました。
ご存知だとは思いましたが、ここをご覧になる方の役に立つかもしれないと考え、コメントしました。
興味深いエントリーにこれからも期待しています!
tessさんコメントありがとうございます。返信が遅れてしまいすみません。
IME and DiMENSiON知りませんでした!テキストボックスの背景色が変わるだけかと思いきや、フォーカスが抜ける時に自動的にIMEをオフにしてくれるんですね。Vimperatorのコマンドラインでも有効でいい感じです。
役立つ情報ありがとうございました(^^
たびたびですみません。
IME関連でもうひとつ便利なプラグインを。
ime_controller
こちらのプラグインではオプションを_vimperatorrcに記述することで、モード移行時の振る舞いを4種類から指定できます。
コマンド入力時はIMEをオフ、通常のテキスト・エリア入力時にはIMEをオンにしたりすることが可能です。
入力エリアの背景色は変わりませんのでお好みで : )
おぉお、またまたありがとうございます。これも見逃していました(^^; Ver0.5ではちょっと上手く動かなかったですが、便利そうですね。わざわざどもです~。
うわ、朝一だったせいか名前間違えてました。
申し訳ありません!
気づかなかったw 直しておきました~。
[…] Firefoxをキーボード操作できるプラグイン「Vimperator」の使い方 […]
参考にさせて頂きました。とても分かり易くまとまっていたので、すんなりインストール&設定できました。ありがとうございます!
DOYAさん、トラックバック&コメントありがとうございます~。
参考にしていただけたようでうれしいです。
Firefox2版を対象に書いた記事だったので、Firefox3リリース後は記事の意味が無くなるのではと心配していましたが、ちょっと安心しました(^^
こちらこそ、非常に参考になりました!ありがとうございます。
Vimperator 1.2preだとTABの自動補完ができるようになってます。
set wildoptions=auto
set complete=sl
これからもよろしくです!
>TABの自動補完ができるようになってます
らしいですね。気になってますw
たびたびありがとうございました。こちらこそよろしくです~。
[…] 結果、ウェブを徘徊する際は素直にペンを置いて、vimperaterを使用する等、キーボードのみの使用を検討しています。 Firefoxをキーボード操作できるプラグイン「Vimperator」の使い方 - ナレッジエース […]
[…] (ページはFirefoxをキーボード操作できるプラグイン「Vimperator」の使い方 – ナレッジエース 様。) […]