第7回 vi 入門|コピー&貼り付け(yy, p)の基本と効率的な使い方|UNIX Cafe

* 当サイトでは、コンテンツの一部に広告を掲載しています。

System Note $ cat /proc/ai-disclosure

本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。

第7回 vi 入門|コピー&貼り付け(yy, p)の基本と効率的な使い方|UNIX Cafe

vi 入門 | 第7回

目次

手が止まらなくなる「vi コピー&貼り付け」の基本

vi では、同じ内容を何度も打ち直さなくてよくなるだけで、編集の流れがかなり軽くなります。特に、似た行を増やして少しだけ直したい場面では、コピーと貼り付けがとても役立ちます。

今回のゴールは、yyp を使って、行単位のコピーと貼り付けを自然に使えるようになることです。操作はシンプルです。実例を見ながら、順番に試してみましょう。


📝 この記事で学べること

  • yy でカーソル行をコピーする方法
  • p でコピーした内容をカーソル行の下に貼り付ける方法
  • 複数行をまとめてコピーする方法(3yy など)
  • ddp を組み合わせて行を移動する方法
  • コピーが便利になる場面と実際の操作例

vi では行をそのまま扱える

vi では「今いる行」をそのまま扱う操作がよく使われます。削除コマンドの dd が行をまるごと削除するように、コピーコマンドの yy も行をまるごとコピーします。この「行単位」という感覚に慣れてくると、短いキー操作で編集を進めやすくなります。

コピーと貼り付けの操作は、次の2ステップで完結します。

  1. コピーしたい行にカーソルを移動して yy を押す
  2. 貼り付けたい行の上にカーソルを移動して p を押す

yy でカーソル行をコピーする

yy は、カーソルがある行を1行まるごとコピーするコマンドです。y は「yank(ヤンク)」の頭文字で、vi ではコピー操作のことをヤンクと呼びます。

yy : カーソル行を1行まるごとコピーする

yy を押しても画面上は何も変わりません。コピーした内容は内部のバッファ(一時保存領域)に保存されています。この状態で p を押すと、貼り付けが実行されます。


💡 3yy で複数行をまとめてコピーできます

3yy のように数字を前に付けると、カーソル行から3行分をまとめてコピーできます。設定ファイルで複数行のブロックをそのまま複製したいときに便利です。


p でカーソル行の下に貼り付ける

p は、yydd でバッファに保存した内容を、カーソル行の下に貼り付けるコマンドです。p は「put(置く)」の頭文字です。

p : バッファの内容をカーソル行の下に貼り付ける

たとえば、次のような設定ファイルで1行目をコピーして2行目に複製したい場合、次のように操作します。

Before(1行目にカーソルがある)

server_name example.com;
listen 80;

After(yy → p → 内容を書き換え)

server_name example.com;
server_name example.net;
listen 80;
  1. 1行目(server_name example.com;)にカーソルを移動する
  2. yy を押してコピーする
  3. p を押してカーソル行の下に貼り付ける
  4. 貼り付けた行の「example.com」を「example.net」に書き換える

似た設定行を1から打ち直す必要がなく、コピーして必要な部分だけ変えるだけで済みます。


💡 P(大文字)でカーソル行の上に貼り付けられます

p(小文字)はカーソル行の下に貼り付けますが、P(大文字)はカーソル行の上に貼り付けます。「ここより上に挿入したい」というときに使えます。


dd と p で行を移動する

dd で削除した行もバッファに残ります。そのため、dd で行を削除してから p で別の場所に貼り付けると、行の移動として使えます。

Before(2行目にカーソルがある)

apple
orange
banana

After(dd → 1行目へ移動 → p)

apple
banana
orange
  1. 「orange」の行にカーソルを移動する
  2. dd で「orange」の行を削除する(バッファに保存される)
  3. 「banana」の行にカーソルを移動する
  4. p を押して「orange」を「banana」の下に貼り付ける

切り取り→貼り付けと同じ感覚で行を移動できます。yy との違いは「元の行が消えるかどうか」だけです。

コピーが便利になる場面

コピー&貼り付けが特に役立つのは、次のような場面です。

  • 似た設定行をもう1行作りたい(ドメイン名だけ変えるなど)
  • 箇条書きの形を揃えたまま行を増やしたい
  • 文章のテンプレート行をコピーして中身だけ書き換えたい
  • 行の順番を入れ替えたい(dd + p

まとめ|打ち直さないだけで編集はかなり楽になる


✔ この記事のまとめ

  • yy はカーソル行を1行まるごとコピーする。画面上の変化はない
  • p はバッファの内容をカーソル行の下に貼り付ける
  • P(大文字)はカーソル行の上に貼り付ける
  • 3yy のように数字を前に付けると複数行をまとめてコピーできる
  • dd + p の組み合わせで行の移動(切り取り→貼り付け)ができる

yyp は、覚えた瞬間から「同じものを打ち直す」手間がなくなります。まずは1行コピーして貼り付ける流れを試してみましょう。慣れてきたら 3yydd との組み合わせも使ってみてください。

次回予告

次は、「vi 検索コマンド」の基本を見ていきます。コピーして流用できるようになると、今度は目的の場所を素早く探したくなります。検索を覚えると、長いファイルでの移動が一気に楽になります。

あわせて読みたい

便利な小ワザをまとめて見たい方は、「vim 入門|『これ便利かも』と感じる小さなワザを、まず5つだけ」もあわせてどうぞ。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe マスター

Macintosh Color Classicから始まった旅は、長いWindows時代を経て、Windows10のサポート終了をきっかけにUNIXの世界へ戻ってきました。UNIX Cafeでは、UNIX・Linux・そしてMacな世界を、むずかしい言葉を使わず、物語のように書いています。プログラミングは、アイデアをコンピューターに伝えるための言葉です。簡単な単語と文法を覚えれば、誰でもコマンドを使えます。ぜひ一度、やさしいプログラミングの世界をのぞいてみてください。

目次