Next: , Previous: Accumulating Text, Up: Top


7.10 矩形領域

矩形領域コマンドはテキストの矩形領域を操作します。 矩形領域のテキストとは、 2つの行の範囲内にある2つの桁位置のあいだにある文字すべてを指します。 矩形領域をキルする、キルした矩形領域をヤンクする、 矩形領域をクリアする、矩形領域を空白やテキストで充填する、 矩形領域を削除する、といったコマンドがあります。 矩形領域コマンドは、複数段に組んだテキストを操作したり、 テキストをそのように組んだり戻したりする場合に便利です。

コマンドで操作する矩形領域を指定するには、 一方の隅にマークを設定し、その対角にポイントを置きます。 このように設定した矩形領域を矩形リージョン (region-rectangle)と呼びます。 というのも、リージョンの制御と似た方法で矩形領域を制御できるからです。 しかし、ポイントとマークの組は、それを使うコマンドに依存して、 リージョンとして解釈される、あるいは、 矩形領域として解釈されることに注意してください。

ポイントとマークが同じ桁位置にある場合、 それらが切り分ける矩形領域は空です。 同じ行上にある場合は、矩形領域の高さは1行です。 桁と行の扱い方が非対称であるのは、 ポイント(同様にマーク)は2つの桁のあいだにあるのに対し、 行ではその中にあるからです。

C-x r k
矩形リージョンのテキストをキルし、 その内容を『最後にキルした矩形領域』として保存する(kill-rectangle)。
C-x r d
矩形リージョンのテキストを削除する(delete-rectangle)。
C-x r y
最後にキルした矩形領域をポイント位置を左上隅としてヤンクする (yank-rectangle)。
C-x r o
空白で埋めた矩形リージョンを挿入する(open-rectangle)。 矩形リージョンの直前の内容は右に押しやられる。
M-x clear-rectangle
矩形リージョンのすべてのテキストを空白で置き換えて、 内容をクリアする。
M-x delete-whitespace-rectangle
指定した矩形領域の各行において、 矩形領域の左端から白文字を削除する。
C-x r t string <RET>
指定した矩形領域の各行にstringを挿入する (string-rectangle)。

矩形操作は2種類に分類できます。 矩形領域を削除したり挿入したりするコマンドと、 空白の矩形領域を扱うコマンドです。

矩形領域内のテキストを消すには、2つの方法があります。 テキストを捨てる(削除する)か、 『最後にキルした』矩形領域として保存するかです。 これらの機能を実現するコマンドは、C-x r ddelete-rectangle)と C-x r kkill-rectangle)です。 どちらも、矩形領域の内側にある各行の部分を削除し、 それより右側にテキストがあれば、 隙間を埋めるようにそれらを左へ移動します。

矩形領域の『キル』は普通の意味でのキルではない、 ということに注意してください。 矩形領域はキルリングには保存されませんが、 最後にキルした矩形領域を1つだけ記録できる特別な場所に保存されます。 というのは、矩形領域をヤンクすることは、 線形のテキストのヤンクとは大きく異なり、 特別なヤンクコマンドが必要だったり、 ヤンクしたテキストの入れ換え操作が意味をなさなかったりするからです。

最後にキルした矩形領域をヤンクするには、 C-x r yyank-rectangle)と打ちます。 矩形領域のヤンクは矩形領域のキルの逆です。 ポイントは矩形領域の左上隅の位置を指定します。 その場所には矩形領域の1行目が挿入され、 矩形領域の2行目はそのつぎの行にというように挿入されます。 影響される行数は、保存されている矩形領域の高さで決まります。

矩形領域のキルとヤンクを使うと、1段組みの一覧表を2段組の一覧表に変換できます。 一覧表の後半を矩形領域としてキルして、 一覧表の第1行の隣にヤンクすればよいのです。

また、C-x r r rC-x r i rを使えば、 矩形領域をレジスタにコピーしたり、レジスタから矩形領域をコピーしたりできます。 See Rectangle Registers

空白の矩形領域を作るコマンドは2つあります。 M-x clear-rectangleは既存のテキストを空白で置き換え、 C-x r oopen-rectangle)は空白の矩形領域を挿入します。 矩形領域をクリアすることは、 矩形領域を削除してから同じ大きさの空白の矩形領域を挿入するのと同じことです。

コマンドM-x delete-whitespace-rectangleは、 特定の桁位置から始まる横に並んだ白文字を削除します。 矩形領域内の各行に作用し、桁位置は矩形領域の左端です。 矩形領域の右端はこのコマンドには関係ありません。

コマンドC-x r tM-x string-rectangle)は、 矩形領域を指定した文字列で置き換えます。 文字列の幅は、矩形領域の幅と同じである必要はありません。 文字列の幅が足りなければ、矩形領域の右側にあるテキストは左へ移動します。 文字列の幅が広ければ、矩形領域の右側にあるテキストは右へ移動します。