← Vim研究所

Vimでレジスタを貼り付ける全パターン(ノーマル/挿入/コマンドライン)

2019-08-22 公開 ・ 更新: 2026-08-05

ノーマルモードのpしか知らないと、インサートモードの最中にヤンクした内容を貼り付けたいとき、わざわざEscで抜けてからpを打ち、またiで戻る、という無駄な往復をしてしまいます。モードごとに専用の貼り付け方法が用意されています。ここでの「レジスタ」は無名レジスタに限らず、名前付きや読み取り専用など48種類すべてに共通する記法です。

目次(6項目)
キーこれだけ覚える
p / Pノーマル/ビジュアルで無名レジスタを貼り付け
"{reg}pノーマル/ビジュアルで指定レジスタを貼り付け
Ctrl-r {reg}インサート/コマンドラインで指定レジスタを挿入

ノーマルモード/ビジュアルモード

キー動作
pカーソルの後に無名レジスタを貼り付け
Pカーソルの前に無名レジスタを貼り付け
"{レジスタ}p指定したレジスタをカーソルの後に貼り付け
"{レジスタ}P指定したレジスタをカーソルの前に貼り付け

{count}pのように数字を前置きすれば、その回数分繰り返して貼り付けられます。

インサートモード

キー動作
Ctrl-r {レジスタ}指定したレジスタを挿入
Ctrl-r Ctrl-r {レジスタ}特殊文字を含めてそのまま挿入
Ctrl-r Ctrl-o {レジスタ}自動インデントを無視して挿入
BEFORE
Hello │ ← インサートモード
Ctrl-r a
AFTER
Hello world

Escで抜けずにその場でレジスタの内容を挿入できるのが最大の利点です。Ctrl-r Ctrl-rCtrl-r Ctrl-oの違いは、レジスタの中にバックスペースのような制御文字が含まれる場合や、自動インデントの影響を受けたくない場合に効いてきます。普段はCtrl-r単体で困ることは少ないです。Ctrl-r =で式を評価しながら挿入するexpressionレジスタも、この系統の応用のひとつです。

コマンドラインモード

キー動作
Ctrl-r {レジスタ}指定したレジスタを挿入
Ctrl-r Ctrl-r {レジスタ}特殊文字を含めてそのまま挿入
Ctrl-r Ctrl-o {レジスタ}自動インデントを無視して挿入

コマンドラインモードでもインサートモードと同じキー体系が使えます。:%s/を打っている途中でヤンクしておいた文字列を挿入したいときなど、検索・置換コマンドを組み立てる場面で重宝します。

マウスでの中央ボタン貼り付けとの関係

Linux環境では中ボタンクリックでの貼り付けもよく使われますが、これは内部的にはCtrl-r Ctrl-o "*相当の動作(選択レジスタからの、自動インデント無視の貼り付け)にあたります。マウス操作とキーボード操作が同じ仕組みの上に成り立っていると分かると、挙動の一貫性が理解しやすくなります。挙動の正確な定義は公式ヘルプ(:h registers)を参照してください。

要点:ノーマルモードはp/P、それ以外のモードはCtrl-r系で統一されています。インサートモード中に貼り付けたくなったら、まずEscを考える前にCtrl-rを思い出すと近道です。
使ってみて

文章を書いている途中で、別の場所にヤンクしておいた単語を挿入したくなるたびに、以前はEscで抜けてp、またaで戻るという無駄な動きをしていました。Ctrl-rを知ってからはインサートモードを維持したまま挿入できるようになり、地味に文章を書くリズムが崩れなくなりました。

まとめ

レジスタの貼り付けはノーマルモードのp/Pと、それ以外のモード共通のCtrl-r系に集約されます。モードをまたぐたびに手が止まる感覚があるなら、この2系統を意識すると整理しやすくなります。複数箇所を集めてから貼り付けたいときは名前付きレジスタの追記モードと組み合わせると効率が上がります。

関連記事

← Vim研究所 トップへ戻る