Next: , Previous: , Up: Killing   [Contents][Index]


12.5 矩形領域(Rectangles)

矩形領域(rectangle)コマンドは、テキストの矩形領域を操作します。矩形領域のテキストとは、特定の行範囲内にある、特定の2つの列の間にある文字すべての文字です。Emacsには矩形領域にたいしてkill、yank、クリアー、スペースやテキストでフィル、削除を行うコマンドがあります。矩形領域コマンドは、複数列のテキストを操作したり、テキストをそのように変更したり戻したりする場合に便利です。

コマンドで操作する矩形領域を指定するには、一方の角にマークを設定し、その対角にポイントを置きます。このように設定した矩形領域を矩形リージョン(region-rectangle)と呼びます。ポイントとマークが同じ列の場合、矩形リージョンは空になります。ポイントとマークが同じ行の場合、矩形リージョンの高さは1行になります。

矩形リージョンは、リージョンの制御と大体同じ方法で制御できます。しかし、ポイントとマークの組がリージョンとして解釈されるのか、あるいは矩形領域として解釈されるかは、それらを使うコマンドに依存することに注意してください。

矩形リージョンはマウスを使用してマークすることもできます。矩形の一方の隅をC-M-mouse-1でクリックして向かい側の隅までドラッグしてください。

C-x r k

矩形リージョンをkillして、最後にkillされた矩形領域として、その内容を保存します(kill-rectangle)。

C-x r M-w

矩形リージョンのテキストを、最後にkillされた矩形領域として保存します(copy-rectangle-as-kill)。

C-x r d

矩形リージョンのテキストを削除します(delete-rectangle)。

C-x r y

最後にkillされた矩形領域の左上隅がポイント位置になるようにyankします(yank-rectangle)。

C-x r o

矩形領域にスペースを挿入します(open-rectangle)。これにより矩形リージョンの以前の内容は右にずれます。

C-x r N

矩形リージョンの左端に行番号を挿入します(rectangle-number-lines)。これにより矩形リージョンの以前の内容は右にずれます。

C-x r c

矩形リージョンの内容をスペースに置き換えてクリアーします(clear-rectangle)。

M-x delete-whitespace-rectangle

指定された矩形領域の各行で、矩形領域の左端の列から空白文字を削除します。

C-x r t string RET

矩形領域の各行にたいして、内容をstringに置き換えます(string-rectangle)。

M-x string-insert-rectangle RET string RET

矩形領域の各行にたいして、stringを挿入します。

C-x SPC

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 rC-x r i rで、矩形領域をレジスターにコピーしたり取り出したりできます。Rectangle Registersを参照してください。

空の矩形領域を作るために使うことのできるコマンドが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-fC-nなどのコマンドは矩形領域に合ったやり方でリージョンのサイズを変更し、kill、yankは矩形領域を処理します。Killingを参照してください。このモードはリージョンがアクティブな間だけ持続します。

矩形リージョンが機能するのはマークがアクティブなときだけです。特にTransient Markモードがオフ(Disabled Transient Markを参照)の場合には、マークをアクティブにするために更にC-x SPCをタイプする必要があるでしょう。

標準のリージョンとは異なり、バッファー終端を越えたり、TABのような伸長された空白スペースの中間のような、通常はポイントを置けない場所にも矩形リージョンのコーナーを置くことができます。

リージョンがアクティブ(Markを参照)、かつそのリージョンがrectangle-mark-modeにある場合には、C-x C-xは矩形リージョンの4隅のコーナーを巡回するコマンドrectangle-exchange-point-and-markを実行します。これはマークされたテキストにたいする処理を呼び出す前に、矩形リージョンをのサイズを変更したい場合に便利です。