Next: , Previous: , Up: Abbrevs   [Contents][Index]


29.3 abbrev展開の制御

Abbrevモードが有効な場合、バッファーのポイントの前にabbrevがあり、そこで自己挿入文字として空白文字か区切り文字(SPCやカンマなど)を挿入したときは、常にabbrevが展開されます。より正確には、単語を構成しない任意の文字はabbrevを展開し、単語を構成する任意の文字はabbrevの一部となります。もっとも一般的なabbrevの使用法は、まずabbrevを挿入し、それから区切り文字か空白文字を挿入してabbrevを展開する方法です。

abbrevの展開は、大文字小文字を維持します。つまり‘foo’は‘find outer otter’に、‘Foo’は‘Find outer otter’に展開されます。デフォルトでは‘FOO’は‘Find Outer Otter’に展開されますが、変数abbrev-all-capsを非nil値に変更した場合は、‘FIND OUTER OTTER’に展開されます。

以下はabbrevの展開を制御するコマンドです:

M-'

プレフィクスと、その後の展開されるabbrevを分割します(abbrev-prefix-mark)。

C-x a e

ポイントの前のabbrevを展開します。(expand-abbrev)。これはAッbレvモードが有効でなくても効果があります。

M-x unexpand-abbrev

最後に展開したabbrevをアンドゥします。

M-x expand-region-abbrevs

リージョンで見つかったいくつか、またはすべてのabbrevを展開します。

abbrevを展開して、その展開結果にプレフィクスをつけたい場合があるかもしれません。たとえば、‘cnst’が‘construction’に展開されるとき、これを使って‘reconstruction’を入力したいと思うかもしれません。しかし、recnstとタイプしてもうまくいきません。なぜなら、それがabbrevとして定義される必要があるからです。これは、プレフィクス‘re’とabbrevの‘cnst’の間で、コマンドM-' (abbrev-prefix-mark)を使うことにより行なうことができます。最初にまず‘re’を挿入します。そこでM-'をタイプします。これにより、コマンドが機能していることを示すためバッファーにハイフンが挿入されます。その後、abbrevの‘cnst’を入力します。このときバッファーには‘re-cnst’が含まれます。そこで単語を構成しない文字を挿入すると、abbrevの‘cnst’が‘construction’に展開されます。この展開ステップでは、M-'が使用中であることを示していたハイフンも削除されます。結果は期待した通り‘reconstruction’となります。

abbrevを展開せずにabbrevのテキストをバッファーに残したい場合、abbrevの後ろの区切り文字をC-qで挿入して、これを行なうことができます。したがってfoo C-q ,とタイプすると、それは展開されず、バッファーには‘foo,’が残ります。

間違ってabbrevを展開した場合、C-/ (undo)で展開をアンドゥできます。これはabbrev展開による挿入をアンドゥし、それをabbrevテキストに戻します。期待する結果が展開されないabbrevと終端となる非単語文字の場合、C-qでクォートして終端文字を再挿入しなければなりません。M-x unexpand-abbrevを使えば終端文字を削除せずに、最後の展開を取り消すことができます。

M-x expand-region-abbrevsは、リージョン内の定義されたabbrevを検索し、見つかったabbrevそれぞれにたいして、abbrevを展開結果に置き換えるか尋ねます。このコマンドはabbrevを使ってテキストを挿入したが、最初にAbbrevモードをオンにするのを忘れたときに便利です。これは特別なabbrev定義のセットで、複数のグローバルな置き換えを一度に行なうときにも便利です。このコマンドは、Abbrevモードが有効でなくても効果があります。

関数expand-abbrevは、abbrev-expand-functionが指定する関数を呼び出すことにより展開を行ないます。この関数を変更することにより、abbrevの展開を自由に変更できます。Abbrev Expansion in The Emacs Lisp Reference Manualを参照してください。