まず結論:1行コピーして貼り付けるまでの基本3操作
viまたはvimでファイルを開き、コピーしたい行にカーソルを移動して yy を押せば1行コピー(ヤンク)が完了します。その後カーソルを貼り付けたい行へ移動し、p(カーソル行の下に挿入)または P(カーソル行の上に挿入)で貼り付けられます。
# 1. ファイルを開く(ノーマルモードで起動)
vim /etc/nginx/nginx.conf
# 2. h/j/k/l または矢印キーでコピーしたい行へ移動
# 3. 1行ヤンク
yy
# 4. 貼り付け先へ移動して貼り付け(カーソル行の下に挿入)
p
この3ステップだけで、設定ファイルの行複製やコメントのコピーといった日常的な編集作業の大半はこなせます。以降では、より柔軟なコピー操作を解説します。
ヤンク操作の基本一覧
viのコピー操作は「ヤンク」(yank)と呼ばれます。ノーマルモードで以下のキー操作が使えます。冒頭に数字を付けると繰り返し回数を指定できます。
yy # カーソル行を1行コピー(Y でも同じ)
3yy # カーソル行から3行コピー(数字+yy で複数行)
yw # カーソル位置から次の単語境界までコピー
yW # カーソル位置から次の空白区切り単語の末尾までコピー
y$ # カーソル位置から行末までコピー
y^ # カーソル位置から行頭の非空白文字までコピー
y0 # カーソル位置から列0(行の絶対先頭)までコピー
yG # カーソル行からファイル末尾までコピー
y1G # カーソル行からファイル先頭までコピー
数字と yy の組み合わせは実務でとくに役立ちます。たとえばApacheの設定ファイルで VirtualHost ブロック(10行程度)をまるごと複製したい場合、先頭行で 10yy → 貼り付け先で p を押すだけで完了します。行数を数えるのが手間な場合は、後述のビジュアルモードで目視選択するほうが確実です。
ビジュアルモードで範囲を目視選択してコピーする
「どこからどこまで」を正確に指定したい場合は、ビジュアルモードが確実です。vim(およびモダンなvi互換実装)では3種類のビジュアルモードが使えます。
# 文字単位の選択
v # ビジュアルモード開始 → カーソル移動で範囲を選択 → y でコピー
# 行単位の選択(行全体が対象になる)
V # 行ビジュアルモード → j/k で選択行を拡張 → y でコピー
# 矩形(列)選択
Ctrl+v # 矩形ビジュアルモード → 縦方向に列を選択 → y でコピー
ビジュアルモードを開始したらカーソルを移動して範囲をハイライトさせ、最後に y を押せばコピー完了です。選択範囲が画面上で視認できるため、複雑な範囲も正確に扱えます。
矩形選択(Ctrl+v)は、複数行にわたるコメントの # 記号の列をまとめて扱いたいときに重宝します。ある運用現場では、複数行のコメントアウト記号を矩形選択で一括コピーして別ファイルに貼り付けるワークフローが定着していました。
名前付きレジスタで複数のコピー内容を同時に保持する
通常のヤンクは「無名レジスタ」に保存されます。次にヤンクや削除を行うと上書きされてしまうため、異なる内容を複数箇所に貼り付けたい場合は「名前付きレジスタ」を活用します。
# "a レジスタに1行ヤンク
"ayy
# "b レジスタにビジュアル選択範囲をヤンク(V で選択後)
"by
# "a レジスタの内容を貼り付け
"ap
# "b レジスタの内容を貼り付け
"bp
# 現在のレジスタ一覧を確認(vim 限定)
:registers
レジスタは a から z まで26個使えます。設定ファイルの複数箇所を別々のバッファに保持しながら編集する作業では、名前付きレジスタを使い分けることで行ったり来たりの手間が大幅に減ります。
実務でよくある3つのコピーパターン
パターン1:設定ブロックをそのまま複製して書き換える
nginxやApacheの設定で既存ブロックをコピーして新しいバーチャルホストを追加するケースです。
# 複製したいブロックの先頭行に移動
# ブロックが10行なら
10yy
# ブロック末尾の1行下へ移動して貼り付け
p
# そのまま編集モード(i や cw)で内容を書き換える
パターン2:別ファイルにコピーして使い回す
vimでは複数ファイルを同時に開き、ウィンドウ間でコピー&ペーストができます。
# 2つのファイルを左右分割で開く
vim -O file1.conf file2.conf
# Ctrl+w → w でウィンドウを切り替え
# コピー元でヤンク後、Ctrl+w w でコピー先ウィンドウへ移動して p
パターン3:削除した内容をそのまま別の場所へ移動する
dd(行削除)や dw(単語削除)で削除した内容も無名レジスタに入ります。直後に p を押せば貼り付けられるため、「切り取り→貼り付け」として使えます。ただし、削除後に別のヤンクや削除を行うと無名レジスタの内容が上書きされる点に注意が必要です。数字付きレジスタ("1p〜"9p)には過去の削除履歴が蓄積されているため、直前の操作なら取り戻せる場合があります。
環境差と注意点
最小構成のコンテナや古いサーバーでは、インストールされているのが本来の vi(BSDvi相当)のみで、ビジュアルモードや名前付きレジスタが利用できないケースがあります。まず動作環境を確認しましょう。
# vim がインストールされているか確認
which vim || which vi
vim --version 2>/dev/null | head -1
# Ubuntu / Debian 系
sudo apt install vim
# RHEL / Rocky / AlmaLinux 系
sudo dnf install vim-enhanced
# Alpine Linux(コンテナ環境で多い)
apk add vim
また、ターミナルエミュレータやSSHクライアントによっては Ctrl+v がOSのペースト操作に割り当てられている場合があります。その場合、矩形ビジュアルモードへの切り替えに Ctrl+q が代替キーとして機能することがあります(環境依存)。
クリップボード連携(ターミナル外へのコピー)は、GUIターミナル上のvimで +clipboard 機能が有効なビルドの場合に限り、レジスタ "+ または "* で実現できます。SSH越しのサーバー作業では基本的に使えないため、マウス選択とターミナル側のコピー機能(多くの場合 Shift+ドラッグ)との併用が現実的です。
「コマンドは打てる。次は”現場で通用する型”を最短で身につけたい」——そんなあなたへ。
ネットの断片的なTipsをコピペするだけでは、体系的な運用スキルはなかなか積み上がりません。リナックスマスター.JPの無料メルマガ「リナマガ」では、現場で実際に使うLinuxサーバー運用の考え方を、順を追って実務目線でお届けしています。いま登録された方には、安全なサーバー構築の「型」をまとめた『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼント中です。
>> 図解60P『Linux入門マニュアル』を無料で受け取る
(メルマガ登録は10秒・いつでも解除OK)
※ 「独学の時間がもったいない」「プロから現場の技術を最短で学びたい」という本気の方には、2日で実務レベルが身につく初心者向けハンズオンセミナーもご用意しています。
