Next: , Previous: , Up: マークとリージョン   [Contents][Index]


11.3 リージョンを操作する

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

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

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

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

デフォルトではマークがアクティブであってもテキストは通常通り挿入されます。つまりaをタイプすれば文字‘a’が挿入されて、その後にマークが非アクティブになります。この挙動を変更するのがDelete Selectionというマイナーモードです。このモードを有効な場合には、マークがアクティブな間にテキストを挿入すると最初にリージョン内のテキストが削除されるのです。M-x delete-selection-modeでDelete Selectionモードのオンとオフを切り替えることができます。