Vimのレジスタについて

レジスタとは

Vimでは、テキストをヤンク(yyコマンド)したり、
削除(ddコマンド)したりすると、
レジスタという領域にその内容が保存される。

要はクリップボードみたいなものだが、
異なる点も多い。

vimでレジスタの一覧を見るときは、

:reg

を実行すると、すべてのレジスタの内容を見ることができる。


試しにvimを開いて実行してみた。

画像1

ここで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を実行した際、
無名レジスタと*レジスタの両方に内容が保存されるようになるということだ。


この記事が気に入ったらサポートをしてみませんか?