愛と勇気と缶ビール

ふしぎとぼくらはなにをしたらよいか

コマンドラインからWEB上の英和/和英辞典をひく

前略。


ウチの研究科はなぜか修士論文が英語なので、論文を書いている途中にちょこちょこ「英和辞典/和英辞典をひきたい」というデマンドが発生する。

修士論文の作成にはVimを使っていて、英和/和英辞典についてはFirefoxのVimperator拡張(http://addons.mozilla.org/ja/firefox/addon/4891)のプラグイン、multi_requester.js(http://coderepos.org/share/browser/lang/javascript/vimperator-plugins/trunk/multi_requester.js)を以下のようにmapして使っている。


map ,a :mr alc


なので、修士論文編集画面から特定の日本語or英語を引くまでのステップは以下のようになる。


Vim → Alt+Tab数回でFirefoxにフォーカス → ,a → 検索したいワードを入力


この「Alt+Tab数回でFirefoxにフォーカス」の部分が無駄である。一日に数十回引く場合もあることを考えると、非常にめんどくさい。ブラウザにフォーカスを当てるとなぜかTwitterのタブが開いていたりして、集中が乱れるのもあまりよろしくない。


そんなわけで、Vimから直接、あるいは一歩退ってコマンドラインからmulti_requesterのような感覚で辞書が引きたい。


なので作った。vimscriptは書けないのでコマンドラインツールを例によってRubyで。


できること

  • %alc word でWEB上の和英/英和辞書を引く。
  • ワードを複数指定してのand検索
  • 検索結果における、検索ワードのハイライト(@jugyoさんのtermcolorを利用させて頂きました)


クソなところ

  • 大したことをするわけでもないのにWWW::Mechanizeに依存している(htmlのパースがめんどくさかったから。Mechanize先生はlibxml2とかに依存していてそれはそれは)
  • 現在時刻を元にした名前のtmpファイルを生成してからそれをless -Rに投げるといううんこな仕様のため、lessにも依存
  • Vimから!で投げると、qでlessの終了 → Enter or 任意のコマンド の二段階を踏んで終了しなくてはならない

あまりよい出来ではないんだけれど、少なくとも一つのことはうまくやっているから個人用途にはこれでいいか、と思っている。.vimrcに map ,a :!alcと書いて使用。

クソなところ2つ目に関しては、Rubyプログラム上で任意のIOを流し込んでlessみたいなページャ起動するとかそんなrubygemがあればいいのかな。あるとしたらressって名前かな、ってググってみたけどなかった。誰か作って。

3つ目に関しては、Vim側でなんとかできるかもしれない。ただ、残念なことにVimレベル1の俺にはまだ知識が足りない。


対象としている英和辞典はスクレイピング禁止らしいので、文句が来たら消すかもしれない。そのへん自己責任で、あと、クソな部分を我慢できる方だけどうぞ。gemcutterにあります。

gem install alc



=2/2追記=

トラックバックにあるref.vimを導入した方が良い。