Vimのレジスタについて
レジスタとは
Vimでは、テキストをヤンク(yyコマンド)したり、
削除(ddコマンド)したりすると、
レジスタという領域にその内容が保存される。
要はクリップボードみたいなものだが、
異なる点も多い。
vimでレジスタの一覧を見るときは、
:reg
を実行すると、すべてのレジスタの内容を見ることができる。
試しにvimを開いて実行してみた。
ここでNameの部分に着目すると、
""とか、"0とかと書かれている。
これは、"で、レジスタにアクセスすることを表し、
"0は0という名前のレジスタにアクセスするコマンドとなる。
そのため、"0pを実行すると、
0レジスタの内容をp(ペースト)するということになる。
新しくaレジスタに何かをコピーしたいときは、
"ayyで行える。
pコマンドの正体
Vimにおいては、このレジスタが機能しているため、
いつも何気なく行っている、
p(ペースト)コマンドは、
無名レジスタの内容をペーストするということになる。
そして、無名レジスタとは、
""にあたる。
つまり、
pコマンドは、""pと同義である。
他のレジスタについて
基本的にユーザが手動でレジスタを設定したいときは、
aからzまでの名前を使う。
それ以外の最初からあるレジスタは、
役割が決まっているようだ。
まず、リードオンリーのレジスタは、
%, #, . ,:がある。
"%は現在のファイルの名前。
"#は最後に開かれたファイルの名前。
". 最後に挿入されたテキスト。
": 最後に実行されたコマンド。
そして、数字のレジスタは、
直近10回分の削除内容を保存している。
1は最後に削除された内容、2はその一つ前というふうに。
OSのクリップボードとの関係
*レジスタは、システムのクリップボードを表す。
そのため、"*pはクリップボードの内容を
ペーストするという意味になる。
デフォルトで、このレジスタを使用したいときは、
.vimrcに、
set clipboard=unnamed
を追記すると、レジスタを選択しない場合に
使われるようになる。
そのため、この設定をすると、
単にyyを実行した際、
無名レジスタと*レジスタの両方に内容が保存されるようになるということだ。