通常、テキストのコピーや移動は、選択してヤンクすることで行いますが、ある一つのテキストブロックを複数の箇所にコピーしたり、点在する多くのテキストブロックを一箇所にコピーしたりするための便利な方法が他にもあります。ここでは、点在するテキスト断片をバッファやファイルに集約するためのコマンドについて説明します。
指定したバッファの内容に領域を追記します。
指定したバッファの内容の先頭にリージョンを追加する。
領域を指定したバッファにコピーし、そのバッファの旧内容を削除します。
指定したバッファの内容を、ポイントにある現在のバッファに挿入します。
指定したファイルの内容の末尾に、リージョンを追加する。
テキストをバッファに蓄積するには、M-x append-to-buffer
を使用します。これによりバッファ名が読み込まれ、リージョンのコピーが指定されたバッファに挿入されます。存在しないバッファを指定した場合、append-to-buffer
がそのバッファを作成します。テキストは、そのバッファ内のポイントがある位置に挿入されます。そのバッファを編集に使用していた場合、コピーされたテキストは、その時点でのポイントの位置から始まるバッファ内のテキストの途中に挿入されます。
そのバッファ内のポイントはコピーされたテキストの末尾に配置されるため、append-to-buffer
を繰り返し使用すると、指定されたバッファ内のテキストがコピーされた順序のまま蓄積されていきます。厳密に言えば、append-to-buffer
は必ずしもバッファ内の既存のテキストに追記するわけではなく、そのバッファ内のポイントが末尾にある場合にのみ追記されます。ただし、バッファを変更するために
append-to-buffer というコマンドのみを使用する場合、ポイントは常に末尾に位置します。
M-x prepend-to-buffer は append-to-buffer
と同様ですが、もう一方のバッファの末尾がコピーされたテキストの前に保持されるため、このコマンドを繰り返し使用するとテキストが逆順で追加されます。M-x copy-to-buffer
も同様ですが、もう一方のバッファにある既存のテキストが削除されるため、バッファには新たにコピーされたテキストのみが残ります。
コマンド C-x x i (insert-buffer)
を使用すると、別のバッファに蓄積されたテキストを取得できます。このコマンドはバッファ名の入力を求め、そのバッファ内のすべてのテキストのコピーを現在のバッファのポイント位置に挿入し、ポイントを挿入されたテキストの先頭に配置します。また、マークを有効にすることなく、挿入されたテキストの末尾の位置をマークリングに追加します。バッファに関する背景情報については、複数のバッファの使用を参照してください。
バッファにテキストを蓄積する代わりに、M-x append-to-file を使用してテキストをファイルに直接追記できます。これによりファイル名の入力が求められ、指定したファイルの末尾にリージョンのテキストが追加されます。ファイルはディスク上で即座に変更されます。
append-to-file は、Emacs でアクセスされていないファイルに対してのみ使用してください。Emacs で編集中のファイルにこれを使用すると、Emacs
の裏側でファイルが変更されてしまい、編集内容の一部が失われる可能性があります。
テキストを移動させるもう一つの方法は、レジスタに格納することです。レジスタを参照してください。