この記事では、Vimでレジスタのうち「名前付きレジスタ」についてご紹介します。
[解答] ヤンクした文字列を明示的に格納するエリア(レジスタ)
ヘルプの説明はこちら。
4. 名前付きレジスタ “a から “z または “A から “Z quote_alpha quotea
change – Vim日本語ドキュメント
これらのレジスタが使われるのは、ユーザーに指定されたときのみである。コピーや削
除の際にこれらのレジスタを小文字で指定すると、コピーや削除されたテキストが蓄え
られ、元から入っていたテキストは消える。大文字で指定すると、元から入っていた内
容の後ろに新しいテキストを付け加える。‘cpoptions’ にフラグ ‘>’ が入っていると、
新しいテキストの前に改行が挿入される。
端的に書かれていないので分かりづらいのが、Vimヘルプの難点です。
簡単にまとめると、下記の通りです。
レジスタ | 説明 |
---|---|
“a ~ “z | 毎回文字列を上書きして格納するレジスタ |
“A ~ “Z | a ~ 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 で格納する場合は、改行と選択した文字列を追記することになるわけです。
アニメーションでみると、だいたいこんな感じです。
追記するときに改行が入ってしまう仕様を考えると、”A ~ ” Z レジスタの使いどころが難しいかもしれません。
このVimコマンドの補足情報
- 利用頻度
- 便利さ
- 覚え易さ
関連するVimヘルプ
Vimからは、下記のコマンドでヘルプを確認できます。
:help quote_alpha :help quotea
ヘルプで検索するときは、通常は大文字小文字は識別されませんので、どちらでも構いません。
参考書籍
こちらの書籍が参考になります。
Vim/neovim関連の書籍で、もっとも評判が良くてバイブルと呼んでる人もいる一冊です。Vim/neovimのバージョンに依存しない沢山のTips形式で、その表題通りに「思考のスピードで編集」できるようになるノウハウが詰まっています。その高い評価は Amazon のレビューからも分かる通りです。Vimmer なら必ず一度は読んでおいて間違いありません。
こちらもVim関連の書籍で評価が高い書籍の一冊です。vim-jpで見かける上級Vimmer(Vimサポーターズ)の皆様による、Vimを実践で使ったノウハウからプラグイン関連の情報が詰まっています。日本の Vim界隈を知る上でも是非一読しておきたい一冊です。
Vim/neovim の設定ファイルやプラグインなど、Vim script に関するノウハウがいくつも詰まった一冊です。日本で Vim Script をここまで深く解説している唯一の書籍と言えます。Vim力を伸ばしたいと考えるなら、絶対に避けては通れない書籍でしょう。