vimperator + SplitBrowser で ExtendedHintからsplitして開く

vimperator 0.5.3用に書き直しました
画面内のリンクをSplitBrowserを用いてブラウザを分割して開く方法。これが出来なきゃ真にSplitBrowserをvimperator上で使えるとは言えない。

ってことで、ExtendedHintモード(後述参照)から開けるように作ってみた。

/**
 * Add key mapping at ExtendedHint Mode.
 * Open the urls to split browser with `S' key.
 */
vimperator.mappings.add(new vimperator.Map(vimperator.modes.HINTS,
    ['S'],
    function(){
        var elms = vimperator.hints.hintedElements();
        for (var i=0; i<elms.length; i++){
            var url = elms[i].refElem.href;
            if (typeof(url) == 'undefined' || !url.length){
                continue;
            }   
            var subBrowser = SplitBrowser.addSubBrowser(url, null, SplitBrowser.POSITION_TOP);
            subBrowser.addEventListener('load',function(){
                subBrowser.removeEventListener('load',arguments.callee,true);
                subBrowser.browser.contentWindow.focus();
            },true);
        }   
    },{ 
        cancelMode:true,
        alwaysActive:false
    }   
));

ExtendedHitとは

vimperator使用者ならHintモード*1を便利に使っていると思うが、もう一つExtendedHintと呼ばれるモードがある。;でこのモードになり、Hintモードと同様にキー操作でリンク等を選択するのは同じだが、さらに入力を受け付けてその後の入力で柔軟な操作を可能としている。

  • oで現在タブに開く
  • tで新規タブに開く
  • Ctrl + wで新規ウィンドウに開く
  • s,aでリンク先の保存

等の動作がある。詳しくは:tab help ;を見よう。

*1:f,FでHintモードとなり、キーボード上で画面上のリンク等を開く事が可能になる