[Vim問題] 名前付きレジスタってなに?

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

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

[解答] ヤンクした文字列を明示的に格納するエリア(レジスタ)

ヘルプの説明はこちら。

4. 名前付きレジスタ “a から “z または “A から “Z        quote_alpha quotea
これらのレジスタが使われるのは、ユーザーに指定されたときのみである。コピーや削
除の際にこれらのレジスタを小文字で指定すると、コピーや削除されたテキストが蓄え
られ、元から入っていたテキストは消える。大文字で指定すると、元から入っていた内
容の後ろに新しいテキストを付け加える。‘cpoptions’ にフラグ ‘>’ が入っていると、
新しいテキストの前に改行が挿入される。

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

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

簡単にまとめると、下記の通りです。

レジスタ説明
“a ~ “z毎回文字列を上書きして格納するレジスタ
“A ~ “Za ~ z のレジスタの文字列に追記して格納するレジスタ

“a ~ “z レジスタは分かり易いですが、問題は “A ~ “Z です。上の説明で分かりますか?

ただ、なかなか分かりづらいので、もう少し詳しく解説します。

番号付きレジスタの仕組み

明示的に指定するレジスタ「”a」~「”z」

名前付きレジスタのうち、”a ~ “z のレジスタはユーザーが指定して格納します。

プログラミングでいうところの変数のような位置づけです。

レジスタに追記するレジスタ「”A」~「”Z」

”a ~ “z のレジスタの文字列に追記して格納するレジスタが、”A ~ ”Z レジスタになります。

といっても、実際には “A ~ “Z という格納エリアがあるわけではありません。

小文字で名前付きレジスタを指定すると上書き、大文字で名前付きレジスタを指定すると追記になる寸法です。

つまり、”a と “A で同じレジスタに対して、格納の仕方が異なるわけです。

例を挙げてみます。例えば下記のような文章があった場合。

Vimが大好きなユーザーたち
NeoVimもきっと好きになれるに違いない

ここで「が大好きな」を “a に格納してみます。該当の文字列をビジュアル選択して、「”ax」とキー入力します。

Vimユーザーたち
NeoVimもきっと好きになれるに違いない

同じように「もきっと好き」を 該当の文字列をビジュアル選択して、「”Ax」とキー入力します。

Vimユーザーたち
NeoVimになれるに違いない

最後に改行を入れて、「”ap」とキー入力して、レジスタa に格納した文字列を貼り付けます。

Vimユーザーたち
NeoVimになれるに違いない

が大好きな
もきっと好き 

“A で格納する場合は、改行と選択した文字列を追記することになるわけです。

アニメーションでみると、だいたいこんな感じです。

GIFアニメ:名前付きレジスタ
名前付きレジスタ “A の利用例

追記するときに改行が入ってしまう仕様を考えると、”A ~ ” Z レジスタの使いどころが難しいかもしれません。

目次

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

  • 利用頻度[star rate=3]
  • 便利さ[star rate=3]
  • 覚え易さ[star rate=2]

関連するVimヘルプ

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

:help quote_alpha
:help quotea

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

参考書籍

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

[temp id=3]

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

この記事を書いた人

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

目次