2006-04-09

Emacs で ispell を利用して英単語補完

Emacs で英単語を入力する時、 dabbrev (dynamic abbrev) 機能のお世話になってる人もあること思う。

簡単に説明すると、dabbrev は「単語」の補完を「動的」におこなう機能。普通の (静的な?) abbrev が「補完候補」を定義する必要があるのに対して、補完候補の定義を必要としないことを「動的」と呼んでいる。では、どうやって補完するのかというと、バッファーの前の方を見て候補を探す。

例えば、次のような文章を書いていて

Expands to the most recent, preceding word for which this is a prefix.

prec と入力。その直後で、M-/ (M-x dabbrev-expand) とすると、precpreceding に展開される。これは、Emacsprec で始まる単語を走査し、preceding を見つけて展開している。

ispell-complete-word

dabbrev は便利だけど、Emacs バッファ中のどこかで「一度使われた単語」でないと展開できない。初出の単語についても「補完」をするには別の手段が必要。

そこで役に立つのが ispell-complete-word というコマンド。ispell は有名なスペル・チェック用のコマンド。このスペル・チェックの辞書を流用して、英単語の補完をしてしまいませう。というアイデアですね。dabbrev と同じように使える。

ぼくは、C-h / でこのコマンドを呼び出すようにしている。

;; C-h prefix
(define-key help-map "/" 'ispell-complete-word)

dabbrev ほど活用はしないけど、いざ、長めの単語を書く時重宝してる。

2 comments:

  1. ぉ、ぉぉっ
    こいつは知らなかったですっ

    コード補完にも流用できますね~
    ありがとうございまっすー

    ReplyDelete
  2. そうそう。これで、新規に関数名や変数名を決める時も間違った綴を書くことが少くなりますよ ;)

    ReplyDelete