23.2 マイナーモード
マイナーモードは明確な方法でEmacsの動作を変更する、オプションの編集用モードです。メジャーモードとは異なり、いつでも任意の数のマイナーモードを有効にできます。いくつかのマイナーモードはバッファーローカル(buffer-local)で、特定のバッファーにたいしてオン(有効)にして、他のバッファーではオフ(無効)に切り替えることができます。それ以外のマイナーモードはグローバル(global)で、それが有効な間はEmacsセッションのすべてのバッファーで行う、すべての操作に影響します。ほとんどのマイナーモードはデフォルトで無効ですが、デフォルトで有効なものもいくつかあります。
ほとんどのバッファーローカルなマイナーモードは、モードラインのメジャーモード標識のすぐ後ろに有効であることを示します。たとえばモードラインに‘Fill’と表示されているとき、それはAuto
Fillモードが有効であることを意味します。Mode Lineを参照してください。
メジャーモードと同様に、各マイナーモードはモードコマンド(mode
command)に関連付けられていて、それはモード名の後ろに‘-mode’を付けた名前です。たとえばAuto
Fillモードのモードコマンドはauto-fill-mode
です。しかしメジャーモードのコマンドは、単純にそのモードを有効にするだけですが、マイナーモードのモードコマンドは、モードを有効または無効にすることができます。
- M-xを通じて、またはバインドしたキー(Key Bindingsを参照してください)をタイプすることにより、モードコマンドをプレフィクスキーなしで直接呼び出すと、それはマイナーモードを切り替え(toggles)ます。つまり、マイナーモードがオフのときはオンに、オンのときはオフに切り替えます。
- プレフィクス引数を指定してモードコマンドを呼び出すと、引数が0または負のときは無条件にマイナーモードをオフにし、それ以外のときは無条件にオンに切り替えます。
- Lispからモードコマンドが呼び出された場合、引数が省略されているか
nil
のとき、マイナーモードは無条件にオンになります。これはメジャーモードのモードフックからマイナーモードをオンに切り替えるのを簡単にします(Major Modesを参照してください)。非nil
の引数は、上で説明したインタラクティブなプレフィクス引数と同様に処理されます。
ほとんどのマイナーモードは、モードコマンドと同じ名前のモード変数(mode
variable)をもっています。変数の値が非nil
のときはモードが有効で、nil
なら無効です。一般的に、Lispから直接モード変数を変更して、モードを有効または無効にするべきではありません。かわりにモードコマンドを使うべきです。しかしCustomizeインターフェース(Easy Customizationを参照してください)を通じてのノード変数のセットは、Customizeが自動的にモードコマンドを実行するので、常に正しくモードを有効または無効にします。
以下にいくつかのバッファーローカルなマイナーモードのリストを示します:
- Abbrevモードは、事前に定義された省略形(abbreviation)の定義にもとづいて、テキストを自動的に展開します。Abbrevsを参照してください。
- Auto Fillモードは、行が長くなりすぎるのを防ぐため、タイプされた文字にしたがって改行を挿入します。Fillingを参照してください。
- Auto Saveモードはバッファー内容を定期的に保存して、クラッシュした場合等に失われる作業量を減らします。Auto Saveを参照してください。
- Enrichedモードは、書式つきのテキストの編集と保存を可能にします。Enriched Textを参照してください。
- Flyspellモードは、自動的に間違ったスペルの単語をハイライトします。Spellingを参照してください。
- Font-Lockモードは、プログラム内で見つかった特定のテキスト単位を自動的にハイライトします。このモードはデフォルトでグローバルに有効になっていますが、個別のバッファーで無効にすることができます。Facesを参照してください。
-
Linumモードは、各行の行番号をウィンドウの左端に表示します。
- Outline minorモードは、Outlineモードと呼ばれるメジャーモードと同様な機能を提供します。Outline Modeを参照してください。
-
Overwriteモードは、通常のプリント文字の挿入により、後の文字をずらすかわりに、既存のテキストを置き換えます。たとえば、ポイントが‘FOOBAR’の‘B’の前にある場合、Gをタイプすると通常は‘FOOGBAR’となりますが、Overwriteモードでは‘FOOGAR’になります。Overwriteモードでは、コマンドC-qは次の文字が何であれ、たとえそれが数字であってもその文字を挿入します
—
これにより既存のテキストを置き換える代わりに文字を挿入する方法が与えられます。モードコマンド
overwrite-mode
は、Insertキーにバインドされています。
-
Binary
Overwriteモードは、バイナリーファイルを編集するための、Overwriteモードの変種です。このモードは改行とタブを他の文字と同じように扱うので、他の文字を上書きしたり、他の文字で上書きさせたりすることができます。Binary
OverwriteモードではC-qの後の数字は、通常どおり8進文字コードを指定します。
- Visual Lineモードは、 “単語単位の折り返し(word
wrapping)”を処理します。これにより長い行は単語境界で折り返されます。Visual Line Modeを参照してください。
以下に便利なグローバルマイナーモードをいくつか示します:
- Column Numberモードは、現在の列番号をモードラインに表示します。Mode Lineを参照してください。
- Delete
Selectionモードでは、リージョンがアクティブの場合、最初にリージョンのテキストを削除してからテキストを挿入します。Using Regionを参照してください。
- Icompleteモードは、ミニバッファーで補完がアクティブのとき、利用可能な候補を表示します。Icompleteを参照してください。
- Line Numberモードは、現在の行番号をモードラインに表示します。このモードはデフォルトで有効です。Mode Lineを参照してください。
- Menu Barモードは、各フレームにメニューバーを表示します。このモードはデフォルトで有効です。Menu Barsを参照してください。
- Scroll
Barモードは、各ウィンドウにスクロールバーを表示します。このモードはデフォルトで有効ですが、スクロールバーが表示されるのはグラフィカルな端末だけです。Scroll Barsを参照してください。
- Tool
Barモードは、各フレームにツールバーを表示します。このモードはデフォルトで有効ですが、ツールバーが表示されるのはグラフィカルな端末だけです。Tool Barsを参照してください。
- Transient
Markモードはリージョンをハイライトして、マークがアクティブなときはEmacsの多くのコマンドがリージョンにたいして操作を行うようになります。このモードはデフォルトで有効です。Markを参照してください。