
目次
コンピュータを使うことによって受けられる大きな恩恵のひとつは、データのコピー(カット)&ペースト機能です。コピー(カット)&ペースト機能を使うと、同じ文字列を複数回入力する必要がなくなり、作業効率が飛躍的にあがります。
文字のカット・アンド・ペースト
この機能はコマンドモードで使用します。具体的には、文字をカットするコマンドと、カットした文字をペーストするコマンドを使います。ここでは、文字単位のカット・アンド・ペーストするために1文字削除を削除する[x]コマンドと1文字をペーストする[p]コマンド(pasteコマンド)を使ってみます。
<実習:カット・アンド・ペーストの実行>
以前に作成した「vimove.txt」を使ってみましょう。
$ vi vimove.txt
Begin
test test
test test
End
コマンドモードで[x]キーを入力すると、カーソルにある文字がカットされます。試しに押してみて下さい。先頭の「B」が削除されたのがわかると思います。
egin
test test
test test
test test
End
その後、カーソルを「egin」の「n」に合わせて[p]を入力してみて下さい。すると、カーソルがある文字の後ろに先ほどカットした文字がペーストされます。
eginB
test test
test test
test test
End
これは、[x]コマンドによってカットされた文字(今回は「B」)がバッファと呼ばれるメモリに一時に格納され、[p]コマンドによってペーストされたのです。[p]コマンドはカーソルの後にバッファ内のデータをペーストするコマンドです。カーソルの前にペーストしたいときは[P]コマンドを使います。
行単位のカット・アンド・ペーストもできます。行をカットするには[dd]コマンドを使います。試しに、1行目(「eginB」)にカーソルがある状態で[dd]を入力してみて下さい。
test test
test test
test test
End
1行目(「eginB」)が削除されました。正確にはバッファに格納された、と言えます。
それではカーソルを最下行に移動させてペーストします。[L]キー、[p]キーの順に入力してみて下さい。
test test
test test
test test
End
eginB
最下行だった「End」の下に「eginB」が表示されます。もし、対象の行を残しておきたい場合は[yy]コマンド(yankコマンド)を使用します。試しに[H][yy]の順に入力してみて下さい。1行目の「test test」がバッファされます。
その後、[L]キー、[p]キーの順に入力してみて下さい。バッファされた「test test」が最下行にペーストされます。
test test
test test
End
eginB
test test
このように[dd]コマンドとは異なり行は削除されませんが、対象の行をバッファする事ができます。ペーストする時は同様に[p](または[P])コマンドを使います。
カット・ペーストを行うコマンド
コマンド | 実行後の動作 |
x | カーソルの右側の文字を1文字カット(切り取り) |
X | カーソルの左側の文字を1文字カット(切り取り) |
dd | 1行文字カット(切り取り) |
ndd | n行文字カット(切り取り) |
yy or Y | 1行コピー |
nyy or Y | n行コピー |
p | カーソルの次の文字または行にペースト(挿入) |
P | カーソルの前の文字または行にペースト(挿入) |
u | カットやペーストを1回取り消し |
カット・アンド・ペーストの取り消し(undo)
誤った場所にカットやペーストした後などにカットやペーストを止めて元に戻したいことがあります。もとに戻したいときはundoコマンド(今までのコマンドを実行しなかったことにする)を実行します。アンドゥするのは[u]コマンド(undo)です。
<実習:1行の文字列のコピー・アンド・ペースト>
viコマンドでvicopypaste.txtファイルを作成します。
$ vi vicopypaste.txt
以下の画面と同じになるように入力してください。(1行目の行頭にスペースがあり、2行目の行頭にスペースがありません)
This is a pen.
That is a book.
~
入力が終了したら[:wq]コマンドで、ファイルを保存して終了します。
その後、再度viコマンドでvicopypaste.txtファイルを開きます。
$ vi vicopypaste.txt
開いたら、下記のように[yy]と[p]を使って以下のように変更してみてください。
This is a pen.
That is a book.
This is a pen.
That is a book.
上記のように表示されたら、[u]コマンド(undo)を入力してみてください。入力された順序と逆の順序で削除されていくのが分かります。表示が元に戻ったらviを終了します。
操作がよくわからなくなった場合は、以下のように操作してみてください。
① [gg]を押します。 → カーソルを先頭行に移動します。 ② [2yy]を押します。 → カーソルのある位置から2行分をコピーします。 ③ [G]を押します。 → カーソルを最下行に移動します。 ④ [$]を押します。 → カーソルが最下行の末尾に移動します。 ⑤ [p]を押します。 → ②でコピーされた行が下にペーストされます。 ⑥ [u]を押します。 → ⑤の作業が削除され、④の状態に戻ります。