[Vim問題] 無名レジスタってなに?

アイキャッチ:無名レジスタってなに?

この記事では、Vimでレジスタのうち「無名レジスタ」についてご紹介します。

[解答] ヤンクした文字列が格納される標準エリア(レジスタ)

ヘルプの説明はこちら。

1. 無名レジスタ “”                              quote_quote quotequote
このレジスタには、コマンド “d”, “c”, “s”, “x” 等で削除されたテキストや、”y” 等
のコピーコマンドでコピーされたテキストが蓄えられる。特定のレジスタが指定されて
いてもいなくても関係ない (例えば “xdd でもこれが使われる)。つまり無名レジスタ
は最後に使われたレジスタを指していると考えられる。よって、大文字レジスタを使っ
て名前つきレジスタにテキストを追加したときも、無名レジスタの中身は、その名前つ
きレジスタと同じになる。
例外はレジスタ ‘_’ である。”_dd は、削除されたテキストをどのレジスタにも蓄え
ない。
無名レジスタの中身は、レジスタを指定しない貼り付けコマンド (p や P) で使うこと
ができる。加えて、このレジスタは ‘”‘ という名前で使うことができる。これは、使
うときには二重引用符 ‘”‘ を 2 個打ち込むということである。レジスタ “” に対する
書き込みはレジスタ “0 にも書き込むことになる。
{Vi ではレジスタの内容はファイルを変更するときに失われ、'”‘ もない}

change – Vim日本語ドキュメント

端的に書かれていないので分かりづらいのが、Vimヘルプの難点です。

レジスタの仕組み

vim では文字列をコピーして無名レジスタに格納するエリアことをヤンクと呼びます。

逆に、ヤンクして格納する先のエリアのことをレジスタと呼びます。

無名レジスタは、Vim版クリップボードと考えると分かり易いかもしれません。

格納先のレジスタを指定しない場合、つまりは通常ヤンクしたら文字列が格納されるエリアを無名レジスタと呼びます。

エディタで下記のようにヤンクを実行すると、無名レジスタに文字列が格納されます。

x  (カーソルの1文字削除&ヤンク )
s  (カーソルの1文字削除&ヤンク後、挿入モードへ遷移する) 
yy (1行の文字列をヤンク)
dd (1行の文字列を削除&ヤンク)
cc または S (1行の文字列を削除&ヤンク後、挿入モードへ遷移する)

他にもヤンクする方法は沢山ありますが、とりあえず何も指定せずに文字列を削除したら無名レジスタにヤンクされると考えましょう。

つまり、削除ではなく「切り取り」と考えた方が自然かもしれません。

このVimコマンドの補足情報

  • 利用頻度[star rate=5]
  • 便利さ[star rate=5]
  • 覚え易さ[star rate=4]

関連するVimヘルプ

Vimからは、下記のコマンドでヘルプを確認できます。

:help copy-move
:help quote
:help "
:help register
:help display
:help yank

ヘルプで検索するときは、通常は大文字小文字は識別されませんので、どちらでも構いません。

参考書籍

こちらの書籍が参考になります。

[temp id=3]

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Vim力アップして、そろそろ上級 Vimmer の仲間入りしたいIT系エンジニアの端くれです。読んでくる訪問者の皆様と一緒に、Vim力を上げていくことができる記事が書ければと考えています。

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください