8.3 カット・アンド・ペースト
Linux Essentials Online Text | 2021/07/26

コンピュータを使うことによって受けられる大きな恩恵のひとつは、データのコピー(カット)&ペースト機能です。コピー(カット)&ペースト機能を使うと、同じ文字列を複数回入力する必要がなくなり、作業効率が飛躍的にあがります。

文字のカット・アンド・ペースト

この機能はコマンドモードで使用します。具体的には、文字をカットするコマンドと、カットした文字をペーストするコマンドを使います。ここでは、文字単位のカット・アンド・ペーストするために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文字カット(切り取り)
dd1行文字カット(切り取り)
nddn行文字カット(切り取り)
yy or Y1行コピー
nyy or Yn行コピー
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]を押します。 → ⑤の作業が削除され、④の状態に戻ります。
PAGE TOP