同じテキストのコピーを何回も挿入したいとき、killリングからyankするのは不便です。なぜなら何かkillするたびに、そのエントリーはリングの下の方へ移動してしまうからです。代替として、テキストをレジスターに保存して、後で取り出す方法があります。
リージョンをレジスターrにコピーします(copy-to-register
)。
レジスターrからテキストを挿入します(insert-register
)。
リージョンをレジスターrのテキストに追加します。
レジスターrの内容がテキストの場合、そのレジスターに追加するのにC-x r +
(increment-register
)も使用できます。レジスターrに数値が含まれている場合、コマンドC-x r
+は違う動作をすることに注意してください。レジスターに数字を保存するを参照してください。
リージョンをレジスターrの先頭に追加します。
C-x r s rは、リージョンのテキストのコピーを、rという名前のレジスターに保存します。マークが非アクティブのとき、Emacsはまず最後にセットされたマークをアクティブにします。マークはこのコマンドの最後に非アクティブになります。マークとリージョンを参照してください。同じコマンドにプレフィクス引数を指定したC-u C-x r s rは、テキストのコピーをレジスターrに保存してから、バッファーのテキストを削除します。これはリージョンのテキストを、レジスターに移動したと考えることができます。
M-x append-to-register RET
rは、リージョンのテキストのコピーを、rという名前のレジスターにすでに保存されているテキストに追加します。プレフィクス引数を指定した場合、レジスターに追加した後にリージョンを削除します。コマンドprepend-to-register
も同様ですが、これはリージョンのテキストをレジスターのテキストの最後ではなく先頭に追加します。
append-to-register
とprepend-to-register
を使ってテキストを集める場合、セパレーターを使って個々に集めたテキストを分割したい場合があります。そのようなときはregister-separator
を構成して、セパレーター文字列をそのレジスターに保存します。たとえばテキストを収集する過程で、個々のテキストを2つの改行で分けたい場合、以下の設定を使うことができます。
(setq register-separator ?+) (set-register register-separator "\n\n")
C-x r i rは、レジスターrのテキストをバッファーに挿入します。通常はポイントをテキストの後に置き、非アクティブのマークをテキストの前にセットします。プレフィクス引数を指定したときは、ポイントをテキストの前、マークをテキストの後にセットします。