Self Reference

Are you receiving this?

VimからMacの内蔵辞書を引きたい

Vim Advent Calendarの289日目です。2012年21月15日になりました。
昨日は@cocoponさんの色見本スクリプトを活用して、lightlineのステータス行をクールに彩るでした。

今日はMacOS X限定のお話です。それ以外の方ごめんなさい。

Macには辞書がたくさん搭載されていますよね。ウィズダムとか大辞林とかフランス語やらドイツ語やらいろいろ。

これらは辞書.appから活用できますし、SpotlightとかAlfredから引いても便利だと思うのですが、やはりVimユーザーとしてはVimから参照したいわけです。

ただ、コマンドラインから引きたい、ということであれば、たとえば次のコマンドが提供されています。

1
open dict://せめてVimVimしく

これをVimから外部コマンドとして実行すれば辞書が使えます。

でもこれだと辞書.appに処理を投げているので、検索のたびにGUI画面がポップアップ表示される点がどうももにょもにょします。

そんなわけでVimから直接Macの内蔵辞書を引くプラギンをつくってみました。

macdict-vim

https://github.com/modsound/macdict-vim

引数に検索したい言葉を指定すると、バッファを分割して訳語を出してくれます。
いくつかコマンドを用意していて、カーソル位置の単語も引きます。詳細はリンク先のREADMEをご覧ください。
実装はObjective-Cです。

残念なところとしては、
・特殊文字が表示できないので一部歯抜けになります。
・出力結果は変なところで改行が入ってしまいます(なぜか句点の前)。

そのほか

OSがLionからMountain Lionになった際に、いくつか搭載辞書が変更されているみたいです。 Objective-Cで次のコードを実行すると、そのPCで使用可能な辞書一覧が表示されます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#import <Cocoa/Cocoa.h>

NSArray *DCSCopyAvailableDictionaries(); 
NSString *DCSDictionaryGetShortName(DCSDictionaryRef dictID); 

// function show dictionaries you have
int main(){
  NSArray *availables = DCSCopyAvailableDictionaries();
  for (NSObject *d in availables) {
    NSString *sn = DCSDictionaryGetShortName((DCSDictionaryRef)d);
    printf("%s\n", [sn UTF8String]);
  }
return 0;
}

私の辞書一覧にWikipediaとAppleも存在したので、当初は今回のプラギンにもこの2つを入れていたのですが、 どうにもうまく参照できないので外しました。。

参考にさせていただいたサイト(元ネタ)

http://tobioka.net/716
http://www.wizard-limit.net/mt/pc/archives/004552.html

明日は@manga_osyoさんです!