[vimperator]リクエスト結果をバッファ出力(muilti_requester.js) - suVeneのアレ

[vimperator]リクエスト結果をバッファ出力(muilti_requester.js)

vimperator が便利すぎてやばい。

元々、ほんの些細なブラウザ操作でもキーボードから手を離すのがかなりのストレスになるのだが、マウスでブラウザ操作するのは半ば諦めていたのに、かなり軽減された。

今までもなるべく手間を減らすように、ブックマークにキーワードを設定したり、Ctrl + L とかでアドレスバーなどにフォーカス後、URL を入力して飛んだりしていたのだけれど、検索や辞書などはそこからまたキーワードを入力せねばならなかったり。

しかし、それが 以下の vimperator plugin でかなり改善された。
Web辞書を引いて結果をバッファウィンドウに出力するvimperatorプラグイン – hogehoge はてなブックマーク数
しかし、
「リクエストしてレスポンスをバッファに表示したい内容」
って、結構沢山ありそうで、もう少し拡張性がほしくなったので、プラグイン書いた。

CodeRepos::Share &#8211 Trac – _libty.js (共通ライブラリ) はてなブックマーク数
CodeRepos::Share – Trac – multi_requester.js (for vimperator ver. 1.2) はてなブックマーク数
CodeRepos::Share – Trac – multi_requester.js (for vimperator ver. 2.0pre) はてなブックマーク数

仕様的には、lookupDictionary.js と似ている。(というか中身もぱくってる!)
実際にはこんな感じで表示される。

20081119_1.jpg

大体の使い方はプラグインのコメントに書いてるけれど、 ここでも説明しておく。
(これ読んで使おうと思う人は、ここでの説明はあんまりいらない気もするが)

SITEINFO

リクエストする URL は以下で拡張可能(優先順位高い順)

ex.) .vimperatorrc

javascript <<EOM
liberator.globalVariables.multi_requester_siteinfo = [
{
map:           ',me',                          // optional: keymap for this siteinfo call
bang:          true,                           // optional:
args:          'any'                           // optional:
name:          'ex',                           // required: subcommand name
description:   'example',                      // required: commandline short help
url:           'http://example.com/?%s',       // required: %s <-- replace string
xpath:         '//*',                          // optional: default all
srcEncode:     'SHIFT_JIS',                    // optional: default UTF-8
urlEncode:     'SHIFT_JIS',                    // optional: default srcEncode
ignoreTags:    'img',                          // optional: default script, syntax 'tag1,tag2,……'
extractLink:   '//xpath'                       // optional: extract permalink
},
];
EOM

追記 2008/12/02 23:53 map, bang, args, extractLink追加

主な lookupDictionary.js と異なる点は、name の値がコマンドとはならないところ。
複数のリクエストを拡張する為に、サブコマンドとなっている。

Usage

実際のコマンドはデフォルトは :mr

:mr ex INPUT_KEYWORD

とすることで、%sINPUT_KEYWORD で置換されてリクエストされる。
追記 2008/11/20 03:00: テキストを選択状態で引数がない場合は、選択テキストで置換して実行するようにした。

:mr! ex INPUT_KEYWORD

とすると、結果が新しいタブに表示され、

:mr! ex -s

と -s オプションをつけることで、選択された文字列で実行される。
追記 2008/11/20 03:00: テキストを選択していて、引数がなければ自動で実行するようにした。
メインコマンドの :mr が気に入らない場合は、

let g:multi_requester_command = "ANY1, ANY2, ……";
or
liberator.globalVariables.multi_requester_command = [ANY1, ANY2, ……];

で上書き可能。

Mappings

上記まででもだいぶタイピングの量は減るのだけれど、もっと簡略化する為のキーマッピングも設定可能。

liberator.globalVariables.multi_requester_mappings = [
[',ml', 'ex'],                     // <-- :mr ex
[',ma', 'alc',    , 'arg'],        // <-- :mr alc arg
[',mg', 'goo', '!', 'arg'],        // <-- :mr! goo
];

設定内容は見たまんま。

自分でキーマップするのとの違いは、文字列が選択状態か arg が設定されている場合はすぐにリクエストが実行され、それ以外は入力待ちになるところ。
なので、この例の場合、何か文字列を選択した状態で ,mg とキーを打つと、即座に goo辞書 で検索結果が新しいタブに表示される。

Options

let g:multi_requester_use_wedata = “false” // true by default

wedata 利用制御フラグ。

追記 2008/11/20 01:50: 2.0pre バージョンを anekos さんが commit してくれた。
追記 2008/12/12 02:20: _libly.js が必要となってます。

Links

CodeRepos::Share Trac – _libty.js (共通ライブラリ) はてなブックマーク数
CodeRepos::Share – Trac – multi_requester.js (for vimperator ver. 1.2) はてなブックマーク数
CodeRepos::Share – Trac – multi_requester.js (for vimperator ver. 2.0pre) はてなブックマーク数
アイテム – データベース: Multi Requester – wedata はてなブックマーク数
Web辞書を引いて結果をバッファウィンドウに出力するvimperatorプラグイン – hogehoge はてなブックマーク数
suVeneのあれ: [vimperator]multi_requester.js で天気予報をみる!(extractLink) はてなブックマーク数

スポンサーリンク
スポンサーリンク

コメント

  1. [Vimperator][Firefox]これは便利 muilti_requester.js

    vimperator が便利すぎてやばい。 元々、ほんの些細なブラウザ操作でもキーボードから手を離すのがかなりのストレスになるのだが、マウスでブラウザ操作するのは半ば諦めていたのに、かなり軽減された。 今までもなるべく手間を減らすように、ブックマークにキーワードを設

  2. Yuu Kawaguchi より:

    suVeneのあれ: [vimperator]リクエスト結果をバッファ出力(muilti_requester.js) http://zeromemory.sblo.jp/article/23101073.html

  3. multiwords より:

    :mr alcを使って複数の単語を検索してみました.例えば,具体的に

    :mr alc big guy

    と入力してみました.しかし,どうやら単語同士がカンマ(%2C)で
    区切られるみたいで,意図せずhttp://eow.alc.co.jp/big%2Cguy/UTF-8/
    にリンクが飛んでしまい,うまく検索結果が返ってきませんでした.

    http://eow.alc.co.jp/big%20guy/UTF-8/ のようにスペース(%20)で区切る
    ようにして複数の単語での検索結果も返すことができれば良いのですが,
    どこをどのように書き換えると良いか教えて頂けませんか?
    #ソースをいろいろいじってみたのですが,よく分かりませんでしたorz
    よろしくお願いします.

  4. suVene より:

    @multiwords
    :mr alc “big guy”
    で、空白込みの検索ができるはずです。

  5. multiwords より:

    @suVene

    ご返事をありがとうございます.早速,上記を試してみました.
    しかし,うまくいきませんでした.どうやら今回は,
    http://eow.alc.co.jp/%E2%80%9Cbig%2Cguy%E2%80%9D/UTF-8/
    を探しに行ってしまっていてダメなようです.
    今回もやはり,空白文字%20がカンマ%2Cに置き換わってしまって
    いるみたいです.

    :mr alc ‘big guy’
    :mr alc “big guy”
    でも同様に試してみましたが,やはり空白文字がカンマに置き換わって
    いてダメでした.

    その他にも何か良いアイデア等がありましたら,教えて頂けると
    うれしいです.よろしくお願いします.

  6. suVene より:

    @multiwords
    double quotation が、投稿すると全角になってしまっていたようです。
    半角にしてもだめでしょうか?

    ちなみに、multi_requester.js の ver. は、0.4.12, _libly.js の ver. は 0.1.21 でしょうか?

  7. multiwords より:

    @suVene

    半角でも試してみましたが,だめでした.

    multi_requester.jsと_libly.jsは上記のリンクからダウンロード
    したのですが,バージョンはそれぞれ0.4.7と
    0.1.21になってました.
    どうやらmulti_requester.jsのバージョンが古かったみたいです.

    早速,ダウンロードして~/.vimperator/plugin/以下に.jsファイル
    を置いてから,firefoxを再起動して使ってみました.しかし,今度は
    :mr のコマンドすら効かなくなってしまいました...

    なぜ動かなくなってしまったのか分かりません.
    何か心当たり等ありますでしょうか?

  8. suVene より:

    @multiwords
    0.4.7 って相当古いですね。去年の12月 Ver.かと。複数引数対応も、0.4.10 あたりなので。

    > なぜ動かなくなってしまったのか分かりません.
    > 何か心当たり等ありますでしょうか?

    情報が少なすぎて、何も心当たりません。
    (というか沢山の要因があって特定できません。)

    少なくとも、fx の ver., vimperator の ver. :message の出力結果等を添えて下さると、なんらかのコメントもできると思いますが。

  9. 匿名 より:

    @suVene

    失礼致しました(汗)私の環境情報をお知らせします.
    firefoxやvimperatorのバージョンは次のようになっています.

    :version
    Vimperator 1.2 (created: 2008/08/16 18:51:52) running on:
    Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009030516 Ubuntu/9.04 (jaunty) Firefox/3.0.7

    どうぞよろしくお願い致します.

    P.S. そういえば,multi_requester.js ver. 0.4.7は,そのままでは使え
    なかったことを思いだしました.調べてみたら,line 93が

    io.source(io.expandPath(‘~/vimperator/plugin/_libly.js’));

    となっていたので,

    io.source(io.expandPath(‘~/.vimperator/plugin/_libly.js’));

    とすると(.をvimperatorの前に付けると)使えるようになりました.
    今回のver. 0.4.12が動かない原因とは直接関係ないかもしれませんが,
    万が一の為にお知らせします.

  10. suVene より:

    なるほど、環境がわかりました。
    multi_requester.js の ver.0.4.7 だった理由は、Vimperator 1.2 用の multi_requester.js だったからですね。
    Vimperator 1.2用の開発は、ver.0.4.7 で同期をとるのが面倒になってきたので、終了して、現在取得されている ver.0.4.12 は、Vimperator 2.0pre 以降用になっています。

    Vimp の 1.2用の取得先は、
    http://coderepos.org/share/browser/lang/javascript/vimperator-plugins/branches/1.2/
    以下にあり、
    2.0pre以降用は
    http://coderepos.org/share/browser/lang/javascript/vimperator-plugins/trunk/
    から取得します。

    そして、当初の質問の複数引数の対応は、残念ながら 2.0pre 以降しか対応しておりません。現在の vimp 2.0 は、かなり安定しているので、この際変更してみるのも手かなと思います。
    (若干 rc ファイルの変更が必要になりますが)

  11. 匿名 より:

    @suVene

    vimp2.0にアップグレードしたら全て解決しました.
    いろいろとアドバイス頂き,ありがとうございました.

    :mr alc ‘big boy’

    だけでなく,

    :mr alc big+boy

    でも同様に複数語を検索できるみたいです.
    こちらの方が入力が少ないので良いかもしれません:)

    あと,検索結果の英単語間のスペースが消えて,単語同士がつながって
    表示されてしまうようです.

    例,
    * bigboy
    大物{おおもの}、大企業{だいきぎょう}
    * bigstrappingboy
    長身{ちょうしん}でがっしりした体格{たいかく}の[大柄{おおがら}な]少年{しょうねん}

  12. うそぶく より:

    vimperatorのmulti_requesterが快適すぎて鼻血でてくる。現状、英辞郎をひこうと思ったらname: alcのxpathを"resultList"から"resultsList"に変更してやる必要があるけど。 http://bit.ly/i4xx6S

  13. DITAさん より:

    [delicious] [vimperator]リクエスト結果をバッファ出力(muilti_requester.js) – suVeneのアレ: http://bit.ly/eLL7az

  14. なうぶらうじんぐ→ [vimperator]リクエスト結果をバッファ出力(muilti_requester.js) – suVeneのアレ http://d.zeromemory.info/2008/11/20/vimperator-multi_requester.html

コメントをどうぞ

メールアドレスが公開されることはありません。