xyzzy
Top Page > Tips > rectangle


長方形コマンド

 リージョンを長方形として扱い、様々なテキスト操作をするコマンドです。

通常のリージョン
abcdefghijklmnopqrstuvwxyz
        abcdefghijklmnopqrstuvwxyz
        abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz

1行目の「d」にマーク、3行目の「p」にカーソル

長方形コマンドを使うときのリージョン
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz

1行目の「d」にマーク、3行目の「p」にカーソル

 と言っても別にリージョン自体が変わる訳ではなく、リージョンを設定した後に実行するコマンドによって、マーク位置からカーソル位置までをどう見るかが変わるということです。
 なお、長方形コマンドは「矩形(くけい)コマンド」と言われることもあります。ていうか、そのように呼ばれることの方が多いです。

Reference

削除・消去

長方形の削除

M-x kill-rectangle
 長方形リージョンを削除し、削除バッファに保持します。ただし、この削除バッファは通常のyankで取り出されるものではなく、yank-rectangleによって取り出される特別の削除バッファです。また、長方形の保持は一つしかできず、kill-rectangleを実行すると、それまで削除バッファにあった長方形は消滅します。

実行前
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
実行後
abcpqrstuvwxyz
abcpqrstuvwxyz
abcpqrstuvwxyz
abcpqrstuvwxyz

長方形の消去

M-x delete-rectangle
 長方形リージョンを消去します。削除バッファには保持されません。それ以外はkill-rectangleと同じです。

挿入

長方形の貼り付け

M-x yank-rectangle
 カーソル位置を長方形の左上の角として、その位置に削除バッファ中の長方形を挿入します。元々あったテキストは右に押しやられます。また、カーソルのある桁よりも前で行が終わっている場合は、その分の半角スペースが挿入されます。

実行前
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz

2行目の「e」にカーソル

削除バッファの内容
hij
hij
hij
hij
実行後
abcdefghijklmnopqrstuvwxyz
abcdhijefghijklmnopqrstuvwxyz
abcdhijefghijklmnopqrstuvwxyz
abcdhijefghijklmnopqrstuvwxyz
____hij

例によってアンダーバーは半角スペースで。

長方形バッファを行末に貼り付け

M-x append-rectangle
 kill-rectangleなどによって長方形用の削除バッファに送られたテキストを、カーソルのある行(論理行ではなく表示行)以降の末尾に挿入します。

実行前
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz

2行目の「c」にカーソル

削除バッファの内容
defg
defg
defg
defg
実行後
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyzdefg
abcdefghijklmnopqrstuvwxyzdefg
abcdefghijklmnopqrstuvwxyzdefg
defg

長方形バッファを1行として貼り付け

M-x yank-rectangle-as-region
 kill-rectangleなどによって長方形用の削除バッファに送られたテキストを、改行を取り払って1行とした上で挿入します。

削除バッファの内容
defg
defg
defg
defg
実行後
defgdefgdefgdefg

空白の挿入

M-x open-rectangle
 長方形リージョンを半角スペースに置き換え、そこにあったテキストを右に押しやります。

実行前
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
実行後
abc________defghijklmnopqrstuvwxyz
abc________defghijklmnopqrstuvwxyz
abc________defghijklmnopqrstuvwxyz
abc________defghijklmnopqrstuvwxyz

挿入メニュー

M-x yank-rectangle-selection
 実行するとステータスバーでキーの入力が求められます。

F6 キャンセル
F7 Append
F8 Overwrite
F9 Insret
F10 Insert as region

置換

長方形のクリア

M-x clear-rectangle
 長方形リージョンを半角スペースに置き換えます。置き換えられた部分は削除バッファに保持されます。

実行前
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
実行後
abc________lmnopqrstuvwxyz
abc________lmnopqrstuvwxyz
abc________lmnopqrstuvwxyz
abc________lmnopqrstuvwxyz

長方形の置換

M-x string-rectangle
 長方形リージョンの各行を指定した文字列に置き換えます。実行すると、ミニバッファで「String rectangle: 」と入力を求められます。入力してEnterを押すと、入力した文字列に置換されます。

実行前
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
置換文字列
String rectangle: test
実行後
abctestlmnopqrstuvwxyz
abctestlmnopqrstuvwxyz
abctestlmnopqrstuvwxyz
abctestlmnopqrstuvwxyz

 なお、この長方形を「幅ゼロ」にすると、入力した文字列が各行に挿入されるようになります。

実行前
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz

1行目の「a」の前にマーク、4行目の「a」の前にカーソル

置換文字列
String rectangle: test
実行後
testabcdefghijklmnopqrstuvwxyz
testabcdefghijklmnopqrstuvwxyz
testabcdefghijklmnopqrstuvwxyz
testabcdefghijklmnopqrstuvwxyz

長方形バッファで上書き

M-x overwrite-rectangle
 カーソル位置を長方形の左上の角として、その位置に削除バッファ中の長方形を挿入します。元々あったテキストは上書きされます。それ以外はyank-rectangleと同じです。

コピー

M-x copy-rectangle
 長方形リージョンを削除バッファに保持します。リージョン内容には変更ありません。

レジスタを使用する場合

 通常の長方形コマンドは専用の削除バッファを使用しますが、一部のコマンドはレジスタを使うこともできます。

M-x copy-rectangle-to-register
レジスタにリージョンをコピー
copy-rectangle
M-x insert-register
レジスタ内容を貼り付け
yank-rectangle

選択範囲の長方形操作

 リージョンではなく選択部分(セレクション)を長方形として操作することもできます。ただし、リージョンのように、とりあえずリージョンを設定しておいて後で長方形として操作するというのでなく、最初からS-F6 S-F6によって長方形として範囲指定する必要があります(というか、通常のセレクションではM-xとやった時点で選択が解除されてしまいます)。
 ここで扱った長方形は、コマンドによって、削除バッファ・クリップボードのどちらかに保持されます。

M-x clear-rectangle-selection
長方形をクリア
clear-rectangle
M-x copy-rectangle-selection
長方形をコピー
copy-rectangle
M-x copy-rectangle-selection-to-clipboard
長方形をクリップボードにコピー
copy-rectangle
M-x delete-rectangle-selection
長方形を消去
delete-rectangle
M-x kill-rectangle-selection
長方形を削除
kill-rectangle
M-x kill-rectangle-selection-to-clipboard
長方形をクリップボードに切り取り
kill-rectangle
M-x open-rectangle-selection
空白の挿入
open-rectangle
M-x paste-rectangle-from-clipboard
クリップボードから長方形を貼り付け
M-x string-rectangle-selection
長方形を文字列に置換
string-rectangle
▲トップページに戻る▲

概略

解説

削除

消去

貼り付け

行末に貼り付け

1行として貼り付け

空白の挿入

挿入メニュー

クリア

置換

上書き

コピー

レジスタ

セレクション