矩形領域(rectangle)コマンドは、テキストの矩形領域を操作します。矩形領域のテキストとは、特定の行範囲内にある、特定の2つの列の間にある文字すべての文字です。Emacsには矩形領域にたいしてkill、yank、クリアー、スペースやテキストでフィル、削除を行うコマンドがあります。矩形領域コマンドは、複数列のテキストを操作したり、テキストをそのように変更したり戻したりする場合に便利です。
コマンドで操作する矩形領域を指定するには、一方の角にマークを設定し、その対角にポイントを置きます。このように設定した矩形領域を矩形リージョン(region-rectangle)と呼びます。ポイントとマークが同じ列の場合、矩形リージョンは空になります。ポイントとマークが同じ行の場合、矩形リージョンの高さは1行になります。
矩形リージョンは、リージョンの制御と大体同じ方法で制御できます。しかし、ポイントとマークの組がリージョンとして解釈されるのか、あるいは矩形領域として解釈されるかは、それらを使うコマンドに依存することに注意してください。
矩形リージョンはマウスを使用してマークすることもできます。矩形の一方の隅をC-M-mouse-1でクリックして向かい側の隅までドラッグしてください。
矩形リージョンをkillして、最後にkillされた矩形領域として、その内容を保存します(kill-rectangle
)。
矩形リージョンのテキストを、最後にkillされた矩形領域として保存します(copy-rectangle-as-kill
)。
矩形リージョンのテキストを削除します(delete-rectangle
)。
最後にkillされた矩形領域の左上隅がポイント位置になるようにyankします(yank-rectangle
)。
矩形領域にスペースを挿入します(open-rectangle
)。これにより矩形リージョンの以前の内容は右にずれます。
矩形リージョンの左端に行番号を挿入します(rectangle-number-lines
)。これにより矩形リージョンの以前の内容は右にずれます。
矩形リージョンの内容をスペースに置き換えてクリアーします(clear-rectangle
)。
指定された矩形領域の各行で、矩形領域の左端の列から空白文字を削除します。
矩形領域の各行にたいして、内容をstringに置き換えます(string-rectangle
)。
矩形領域の各行にたいして、stringを挿入します。
Rectangle
Markモードを切り替えます(rectangle-mark-mode
)。このモードがアクティブのとき矩形領域はハイライトされ、拡大・縮小が可能になります。標準のkillおよびyankコマンドは、それにたいして操作を行います。
矩形領域の操作は2種類に分類できます。それは矩形領域を消去または挿入するものと、空の矩形領域を作るものです。
矩形領域のテキストを消去するには2つの方法があります。C-x r d
(delete-rectangle
)はテキストを無条件に削除します。C-x r k
(kill-rectangle
)はテキストを取り除いて、それを最後にkillされた矩形領域として保存します。両方とも矩形領域の各行の指定したテキストを消去するように、矩形リージョンを消去します。その行の後に続くテキストがある場合、削除による隙間を生めるために後方に移動されます。
矩形領域のkillは普通のkillとは異なります。矩形領域はkillリングには保存されず、一番最後にkillされた矩形領域だけを記録する、特別な場所に保存されます。矩形領域のyankは線形テキストのyankとは大きく異なるので、異なるyankコマンドが使われるからです。矩形領域にたいしてyankのpopは定義されていません。
C-x r M-w
(copy-rectangle-as-kill
)は矩形領域用のM-wに相当します。これはバッファーからテキストを削除することなく、最後にkillされた矩形領域として、矩形領域を記録します。
killされた矩形領域をyankするには、C-x r y
(yank-rectangle
)とタイプします。矩形領域の最初の行はポイント位置に挿入されます。矩形領域の2行目はポイントの1行下の位置に挿入され、以下同様に挿入されていきます。影響を受ける行数は、保存された矩形領域の高さにより決定されます。
たとえば1列のリスト2つを2列のリストに変換できます。一方の1列リストを矩形領域としてkillしてもう一方の1列リストの隣にyankすればよいのです。
C-x r r rとC-x r i rで、矩形領域をレジスターにコピーしたり取り出したりできます。レジスターに矩形領域を保存するを参照してください。
空の矩形領域を作るために使うことのできるコマンドが2つあります。C-x r c
(clear-rectangle
)は、矩形リージョンの既存のテキストを空白に置き換えます。C-x r o
(open-rectangle
)は空白の矩形領域を挿入します。
M-x delete-whitespace-rectangleは、指定した列を起点に水平方向の空白文字を削除します。これは矩形領域の各行に適用され、開始列は矩形領域の左端です。矩形領域の右端はこのコマンドに影響を及ぼしません。
コマンドC-x r N
(rectangle-number-lines
)は、矩形領域の左端に行番号を挿入します。通常は矩形領域の最初の行を1として番号が開始されます。プレフィクス引数を指定すると、このコマンドは開始番号と、番号を出力する際の書式文字列(Formatting
Strings in The Emacs Lisp Reference Manualを参照してください)の入力を求めます。
コマンドC-x r t
(string-rectangle
)は、矩形リージョンの各行を文字列で置き換えます。文字列の幅は矩形領域と同じ幅である必要はありません。矩形領域の後ろのテキストは、文字列の幅が少ないときは左に、文字列の幅が大きいときは右にシフトされます。
コマンドM-x
string-insert-rectangleは、string-rectangle
と同様ですが、各行に文字列を挿入し、元の文字列は右にシフトされます。
コマンドC-x SPC
(rectangle-mark-mode
)は、矩形リージョンをハイライトするか、標準のリージョンをハイライトするかを切り替えます(最初にリージョンをアクティブにする必要があります)。このモードが有効な場合、C-f、C-nなどのコマンドは矩形領域に合ったやり方でリージョンのサイズを変更し、kill、yankは矩形領域を処理します。テキストのkillと移動を参照してください。このモードはリージョンがアクティブな間だけ持続します。
矩形リージョンが機能するのはマークがアクティブなときだけです。特にTransient Markモードがオフ(Transient Markモードを無効にするを参照)の場合には、マークをアクティブにするために更にC-x SPCをタイプする必要があるでしょう。
標準のリージョンとは異なり、バッファー終端を越えたり、TABのような伸長された空白スペースの中間のような、通常はポイントを置けない場所にも矩形リージョンのコーナーを置くことができます。
リージョンがアクティブ(マークとリージョンを参照)、かつそのリージョンがrectangle-mark-modeにある場合には、C-x
C-xは矩形リージョンの4隅のコーナーを巡回するコマンドrectangle-exchange-point-and-mark
を実行します。これはマークされたテキストにたいする処理を呼び出す前に、矩形リージョンをのサイズを変更したい場合に便利です。