Firefox をある程度の単位で上下
今さらながらに Greasemonkey とか便利なんじゃないかとか思いはじめていたりするんですけど。でも便利だけど書いてて楽しくないよねとか。要するに役に立つものはツマらない教の信者だというだけですけど。
なんとなくはてなブックマークで j とか k とか押してみたところ、項目単位でスクロールできることに気付いて、あーコレ gmail でもあったけど他でも結構使いたいかもなぁとか思って、既出予感ひしひしながらも、なんとなくスクロールする単位を検出してなんとなく上下にスクロールするスクリプトを書きました。人狼BBSだの四国だのの発言単位スクロールとかもできるとか。
はてなアンテナの JS をチラチラ見させていただいたのと、 getElementPositionY は http://d.hatena.ne.jp/ghostbass/20060718/1153228402 を参考にさせていただきました。
使いかたとかはよく知りません。私は ~/wrk/js/scroll_sections.js とかに保存して、 keyconfig と functions for keyconfig を使って、
f4kc_LoadSubScript("file:///home/i/wrk/js/scroll_sections.js"); initSections(); scrollSectionDown();
とかを Shift+J とかに割当ててるみたいです。以下ソース。
function getElementPositionY(e) { var y = 0; while (e.offsetTop) { y += e.offsetTop; e = e.offsetParent; } return y; } function comparePos(a, b) { return a - b; } var sects = new Array(); function initSections() { var document = _f4kcGetFocusedWindow().document; var sectElems = ['h1', 'h2', 'h3', 'h4', 'tr', 'li']; var i = 0; for (var j = 0; j < sectElems.length; j++) { var ns = document.getElementsByTagName(sectElems[j]); for (var k = 0; k < ns.length; k++) { sects[i] = getElementPositionY(ns[k]); i++; } if (sects.length > 9) break; } sects.sort(comparePos); } function scrollSectionDown() { var up = _f4kcGetFocusedWindow().pageYOffset; for (var i = 0; i < sects.length-1; i++) { if (up < sects[i]) { _f4kcGetFocusedWindow().scroll(0, sects[i]); return; } } } function scrollSectionUp() { var up = _f4kcGetFocusedWindow().pageYOffset; for (var i = sects.length-1; i > 0; i--) { if (up > sects[i]) { _f4kcGetFocusedWindow().scroll(0, sects[i]); return; } } }
zsh で rpm のタブ補完
zsh はコマンドの引数に応じて補完対象をかえてくれるのはとても便利です。私的に実用性が謎だったのが、 scp user@host: の後のタブ補完と、 rpm -qi の後のタブ補完でした。両方とも補完速度が尋常じゃなく遅いわけです。
で、後者は rpm -qa が遅いのだろう、ということで簡単にキャッシュしてみることにしました。
rpm -qa > /data/rpmqa
などとしてキャッシュを作り、
#!/bin/sh if [ "x$@" = "x-qa" ]; then exec cat /data/rpmqa else exec /bin/rpm $@ fi
という内容のコマンド(引数が -qa ならキャッシュを投げて、そうじゃなければ普通に rpm を実行)を ~/bin の下に rpm という名前で置いてみたところ、補完がとても快適になりました。