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


11.3 リージョンを操作する

一度リージョンを設定すると、それを処理するいくつかの方法があります:

マークが非アクティブのときにはデフォルトの動作をするが、マークがアクティブのときはリージョンを処理するコマンドがいくつかあります。たとえばM-$ (ispell-word)は、通常はポイントのある単語のスペルをチェックしますが、マークがアクティブのときはリージョンの中のテキストをチェックします(Spellingを参照してください)。通常そのようなコマンドはリージョンが空のとき(たとえばマークとポイントが同じ位置のとき)は、デフォルトの動作をします。空のリージョンにたいして処理を行いたいときは、変数use-empty-active-regiontに変更してください。

Erasingで説明したように、DEL (backward-delete-char)とdelete (delete-forward-char)もこの方法で動作します。マークがアクティブのときはリージョンのテキストを削除します(例外として数引数nに1以外が指定されたとき、これらのコマンドはマークがアクティブか関係なく、n文字を削除します)。変数delete-active-regionnilに変更すると、これらのコマンドはマークがアクティブのとき異なる動作をしなくなります。これをkillに変更するとリージョンを削除するかわりに、killするようになります(Killingを参照してください)。

その他のコマンドにはデフォルトの動作はなく、常にリージョンを処理します。通常このようなコマンドには、C-w (kill-region)やC-x C-u (upcase-region)のように、名前にregionがついています。マークが非アクティブのときは“非アクティブなリージョン”、すなわちポイントと最後にマークをセットした位置の間にあるテキストにたいして処理を行います(Mark Ringを参照してください)。この動作を無効にするには、変数mark-even-if-inactivenilに変更してください。そうするとこれらのコマンドはマークが非アクティブのときエラーをシグナルします。

デフォルトでは、マークがアクティブでもテキストの挿入は普通に行われます。たとえばaをタイプすると、‘a’が挿入されてからマークが非アクティブになります。マイナーモードのDelete Selectionモードを有効にしていると、マークがアクティブなときは、最初にリージョンのテキストを削除してから、テキストが挿入されます。Delete Selectionモードをオフにするには、M-x delete-selection-modeとタイプしてください。