切り取り、ヤンク(コピー)、貼り付けの基本【無名レジスタ】
d, x コマンドなどでテキストを削除したときや、y コマンドでテキストをヤンクした場合、そのテキストは 無名レジスタ "" に保存されます。
無名レジスタの内容は p, P コマンドで貼り付けることができます。
ノーマルモードでの操作
dd -- カレント行を削除
yy(Y) -- カレント行をヤンク
p -- 貼り付け
D -- カーソル位置から行末までを削除
C -- カーソル位置から行末までを置換(削除して挿入モードへ)
s -- カーソル位置の 1 文字を削除して挿入モードへ
S -- カーソルのある行を削除して挿入モードへ
名前付きレジスタに切り取り/ヤンク(コピー)/貼り付け
x, d, y などの削除/ヤンクコマンドの前に、名前付きレジスタ を指定すると、そのレジスタにテキストの内容を保存できます。
名前付きレジスタには、"a から "z までのいずれかを指定します。
p, P コマンドの前に名前付きレジスタを指定すれば、そのレジスタの内容を貼り付けることができます。
ノーマルモードでの操作
"a yy -- カレント行を "a にヤンク(コピー)
"a dd -- カレント行を "a に切り取り
"a 3d -- 3 行を "a に切り取り
"a p -- "a の内容をカーソルの後ろに貼り付け
"a P -- "a の内容をカーソルの前に貼り付け
ex コマンドで同様のことを行う場合は、コマンドの後ろにスペースを入れてからレジスタ名を指定します。
ex コマンド
:10,20ya a -- 10 行目から 20 行目までを "a にヤンク(コピー)
:pu a -- "a の内容をカーソルの後ろに貼り付け
挿入モードでは Ctrl-R に続けてレジスタ名を入力することで、その内容を挿入することができます。
挿入モード
^Ra -- レジスタ a の内容を挿入
名前付きレジスタに格納したテキストにアペンドする
レジスタ名を大文字で指定することにより、名前付きレジスタに既に格納されている内容に対して、テキストをアペンドすることができます。
ノーマルモードでの操作
"A yy -- カレント行の内容をレジスタ "a にアペンド
OS のクリップボードへのコピー/貼り付け(レジスタ: “*)(for Windows)
クリップボード・レジスタ "* は OS のクリップボードとの同期用に用意されています。
レジスタ "* に対して y, p コマンドなどを実行すると、OS のクリップボードのテキストをコピーしたり、貼り付けたりすることができます。
"*yy -- クリップボードへカレント行をコピー
"*p -- クリップボードの内容を貼り付け
設定: クリップボードの内容と無名レジスタの内容を同一にする
OS クリップボードとの同期のために、いちいち "* レジスタを指定するのが面倒な場合は、
:set clipboard+=unnamed
と設定しておくと、自動的にクリップボード・レジスタ "* の内容と無名レジスタ "" の内容が同期されるようになります。
その結果、レジスタを指定しないでもクリップボードへのコピー、クリップボードからの貼り付けが可能になります。
詳しく仕組みについては :help gui-clipboard を参照してください。
番号付きレジスタ (レジスタ: “1 ~ “9)
d コマンドにより削除したテキストは、番号付きレジスタ("1 ~ "9)に直近の削除内容が 9 つまで保持されます。
例えば、最後に削除したテキストはレジスタ "1 に格納されており、3 つ前に削除されたテキストはレジスタ "3 に格納されています。
これらの内容はいつでも取り出して貼り付けることができます。
"3p -- 3 つ前に削除されたテキストを貼り付け
番号付きレジスタに保存されるのは、削除したテキストだけで、ヤンク(コピー)したテキストは保存されないことに注意してください。
ブラックホールレジスタ(レジスタ: “_)
ヤンク/削除したテキストは自動的に無名レジスタ "" や、番号付きレジスタ ("1 ~ "9) に格納されますが、どのレジスタにもテキストの内容を保存したくない場合は、ブラックホールレジスタ "_ を指定して削除を実行します。
"_dd
現在のレジスタの内容を一覧表示する
下記のコマンドを実行することで、現在レジスタに保持されている値を一覧表示できます。
:reg[isters] -- すべてのレジスタの内容を表示
:reg[isters] abc -- レジスタ a, b, c の内容を表示
実行例
:reg
--- レジスタ ---
"" hoge
"1 aaa
"2 bbbasdf
"3 Hello
"4 abc^J
"5 bbb
"6 CCC
"7 ddd
"8 EEE
"9 asdf sdf
"a dd
"b I// ^[
"c kvvkvk
"-
"* クリップボード
".
": やほ
"/
レジスタの内容は、ファイル (~/.viminfo) に保存されているため、Vim を再起動しても前回格納した値を取得することができます。