同じテキストのコピーを複数回挿入したい場合、キルリングからそれを取り出すのは不便なことがあります。後続のキルが行われるたびに、そのエントリがリングの下方へと押し下げられてしまうためです。別の方法としては、テキストをレジスタに格納し、後で取り出すという方法があります。
領域をレジスタ 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 のテキストをバッファに挿入します。通常は、テキストの後にポイントを置き、その手前にマークを設定しますが、マークは有効にしません。接頭辞引数を指定すると、代わりにテキストの手前にポイントを置き、その後にマークを設定します。