この記事では、Vimでレジスタのうち「無名レジスタ」についてご紹介します。
[解答] ヤンクした文字列が格納される標準エリア(レジスタ)
ヘルプの説明はこちら。
1. 無名レジスタ “” quote_quote quotequote
change – Vim日本語ドキュメント
このレジスタには、コマンド “d”, “c”, “s”, “x” 等で削除されたテキストや、”y” 等
のコピーコマンドでコピーされたテキストが蓄えられる。特定のレジスタが指定されて
いてもいなくても関係ない (例えば “xdd でもこれが使われる)。つまり無名レジスタ
は最後に使われたレジスタを指していると考えられる。よって、大文字レジスタを使っ
て名前つきレジスタにテキストを追加したときも、無名レジスタの中身は、その名前つ
きレジスタと同じになる。
例外はレジスタ ‘_’ である。”_dd は、削除されたテキストをどのレジスタにも蓄え
ない。
無名レジスタの中身は、レジスタを指定しない貼り付けコマンド (p や P) で使うこと
ができる。加えて、このレジスタは ‘”‘ という名前で使うことができる。これは、使
うときには二重引用符 ‘”‘ を 2 個打ち込むということである。レジスタ “” に対する
書き込みはレジスタ “0 にも書き込むことになる。
{Vi ではレジスタの内容はファイルを変更するときに失われ、'”‘ もない}
端的に書かれていないので分かりづらいのが、Vimヘルプの難点です。
レジスタの仕組み
vim では文字列をコピーして無名レジスタに格納するエリアことをヤンクと呼びます。
逆に、ヤンクして格納する先のエリアのことをレジスタと呼びます。
格納先のレジスタを指定しない場合、つまりは通常ヤンクしたら文字列が格納されるエリアを無名レジスタと呼びます。
エディタで下記のようにヤンクを実行すると、無名レジスタに文字列が格納されます。
x (カーソルの1文字削除&ヤンク ) s (カーソルの1文字削除&ヤンク後、挿入モードへ遷移する) yy (1行の文字列をヤンク) dd (1行の文字列を削除&ヤンク) cc または S (1行の文字列を削除&ヤンク後、挿入モードへ遷移する)
他にもヤンクする方法は沢山ありますが、とりあえず何も指定せずに文字列を削除したら無名レジスタにヤンクされると考えましょう。
つまり、削除ではなく「切り取り」と考えた方が自然かもしれません。
このVimコマンドの補足情報
- 利用頻度
- 便利さ
- 覚え易さ
関連するVimヘルプ
Vimからは、下記のコマンドでヘルプを確認できます。
:help copy-move :help quote :help " :help register :help display :help yank
ヘルプで検索するときは、通常は大文字小文字は識別されませんので、どちらでも構いません。
参考書籍
こちらの書籍が参考になります。
Vim/neovim関連の書籍で、もっとも評判が良くてバイブルと呼んでる人もいる一冊です。Vim/neovimのバージョンに依存しない沢山のTips形式で、その表題通りに「思考のスピードで編集」できるようになるノウハウが詰まっています。その高い評価は Amazon のレビューからも分かる通りです。Vimmer なら必ず一度は読んでおいて間違いありません。
こちらもVim関連の書籍で評価が高い書籍の一冊です。vim-jpで見かける上級Vimmer(Vimサポーターズ)の皆様による、Vimを実践で使ったノウハウからプラグイン関連の情報が詰まっています。日本の Vim界隈を知る上でも是非一読しておきたい一冊です。
Vim/neovim の設定ファイルやプラグインなど、Vim script に関するノウハウがいくつも詰まった一冊です。日本で Vim Script をここまで深く解説している唯一の書籍と言えます。Vim力を伸ばしたいと考えるなら、絶対に避けては通れない書籍でしょう。