リージョンを用意したら、以下のような操作が可能です。
マークが非アクティブなときはデフォルトの動作をするが、マークがアクティブなときはリージョンに対して動作するコマンドがあります。例えば、M-$ (ispell-word)
は通常、ポイントにある単語のスペルをチェックしますが、マークがアクティブな場合はリージョン内のテキストをチェックします(スペルのチェックと修正を参照)。通常、このようなコマンドは、リージョンが空の場合(つまり、マークとポイントが同じ位置にある場合)にはデフォルトの動作を行います。空のリージョンに対して動作させたい場合は、変数
use-empty-active-region を t に変更してください。
テキストの消去で説明されている通り、DEL (backward-delete-char) および
Delete (delete-forward-char)
コマンドも同様に動作します。マークが有効な場合、これらはリージョン内のテキストを削除します。(例外として、n が 1 ではない数値引数 n
を指定した場合、これらのコマンドはマークの有効・無効にかかわらず n 文字を削除します)。変数 delete-active-region を nil
に変更すると、これらのコマンドはマークが有効な場合でも動作が変わりません。値を kill
に変更すると、これらのコマンドはリージョンを削除する代わりに キル します(テキストのキルと移動 を参照)。
その他のコマンドは常にリージョンに対して動作し、デフォルトの動作は定義されていません。こうしたコマンドの名前には通常、C-w (kill-region) や C-x C-u (upcase-region) のように
region という語が含まれています。マークが非アクティブな場合、これらのコマンドは非アクティブリージョン――すなわち、ポイントから最後にマークが設定された位置までのテキスト――に対して動作します(マークリングを参照)。この動作を無効にするには、変数 mark-even-if-inactive を nil
に変更してください。これにより、マークが非アクティブな場合、これらのコマンドは代わりにエラーを報告するようになります。
デフォルトでは、マークが有効な状態でもテキストの挿入は通常通り行われます。例えば、a と入力すると文字
‘a’ が挿入され、その後マークが無効になります。マイナーモードである
Delete Selection
モードはこの動作を変更します。このモードを有効にすると、マークが有効な状態でテキストを挿入した際、まずリージョン内のテキストが削除されます。ただし、delete-selection-temporary-region
オプションをカスタマイズすることで、この動作を調整できます。デフォルト値は nil ですが、これを
t に設定すると、一時的に有効なリージョンのみが置換対象となります。具体的には、マウスドラッグ(マークの設定 を参照)やシフト選択(シフト選択 を参照)によって設定されたリージョン、および
Transient Mark Mode が無効な場合の C-u C-x C-x
によるリージョンが対象となります。さらに、delete-selection-temporary-region を selection に設定することで動作をさらに調整できます。この場合、C-u
C-x C-x
による一時的リージョンは置換されず、マウスドラッグまたはシフト選択によって有効化されたリージョンのみが置換対象となります。Delete
Selection モードのオン/オフを切り替えるには、M-x delete-selection-mode
と入力してください。現在のバッファのみで Delete Selection モードのオン/オフを切り替えるには、M-x
delete-selection-local-mode と入力してください。