OpenWindows ユーザーズガイド (上級編)

テキストのコピーと移動 - yank、delete、put

大部分の文書処理プログラムと同様に vi エディタでも、テキスト行の「コピー&ペースト」と「カット&ペースト」ができます。vi で「コピー&ペースト」を行う場合は、yankput コマンドを使います。また、「カット&ペースト」の場合は、deleteput を使います。

vi で比較的短いテキストブロックのコピーや移動を行う場合は、 yankdeleteput の各コマンドを組み合わせて使います。

行のコピー

行をコピーするには、「yank」を表す yy (または Y) と、「put below」を表す p (または「put above」を表す P) という 2 つのコマンドが必要です。Yyy は同じ働きをします。

1 行をバッファに取り込む (yank) には、その行の任意の位置にカーソルを移動して yy と続けて入力します。次に、取り込んだ行を挿入 (コピー) する位置の上の行にカーソルを移動して p を押します。その取り込んだ行が p と押した行の下に表示されます。

取り込んだ行をカーソルがある行の上にコピーするには、P を押します。

yy コマンドでは行数を指定できます。たとえば、バッファに 11 行を取り込むには、11yy と続けて入力します。すると、カーソルがある行から下方向に数えて 11 行目までがバッファに取り込まれ、画面の最終行にその旨を示すメッセージ「11 行をバッファにコピーしました」が表示されます。

先に説明した任意の削除コマンドの直後に p または P コマンドを使うと、削除したテキストをカーソルがある行の下の行または上の行に挿入できます。


注意 - 注意 -

コピーや移動 (yank、delete、put) の操作中は、カーソルの移動コマンドだけを使ってください。テキストを新しい位置に挿入する前に他のテキストをコピーしたり移動したりすると、先にコピーや移動のためにバッファに取り込んだ内容が失われてしまいます。


行の移動

行の移動についても、dd (「delete」を表す) と、p (または P) という 2 つのコマンドが必要です。

行を移動するには、まずその移動したい行に移動して (その行内ならカーソルはどこにあってもよい)、dd と続けて入力します。たとえば、その行とその行から数えて 5 行目までの 5 行分を移動の対象行としたい場合は、その行で 5dd と続けて入力します。このコマンドによって、移動の対象行が削除されます。

次に、その削除した行を挿入する位置の上の行に、カーソルを移動して p を押します。その行がカーソルのあった行の下に挿入されます。

また、その削除した行をカーソルのある行の上に挿入するには、P を押します。

名前付きバッファの使い方

別個の行グループを文書内のさまざまな位置に繰り返し挿入 (コピーまたは移動) するために、それらの行を名前付きバッファに取り込むことができます。名前付きバッファを指定するには、コマンドの前に二重引用符 (") とバッファ名 (a から z までのうちの 1 文字) を付けます。たとえば、a という名前付きバッファに 4 行を取り込むには (コピーの場合)、その最初の行で "a4yy と続けて入力します。他のバッファを同時にいくつも使えるため、このコピー操作の他に、ある位置から削除したテキストを他の複数の位置に移動することもできます。たとえば、12 行を削除して b という名前付きバッファに取り込むには、"b12dd と続けて入力します。

取り込んだテキストを挿入するには、p または P コマンドの前に "n を付けます (n は名前付きバッファ)。たとえば、b というバッファに保存した行を挿入する場合は、"bp または "bP と続けて入力します。

同じ名前付きバッファに新しい行を取り込むと、元のバッファは上書きされます。名前付きバッファは、vi を終了するまで保存されたままです。

名前付きバッファを使うと、名前付きバッファに保存したテキストに影響を与えることなく、他のテキストを確実にコピーしたり移動したりできます。ただし、同じ名前付きバッファを意図的に上書きしないことが前提条件です。