レジスタ練習クイズ6問(選択式)
レジスタはモードによって貼り付け方が変わるため、頭では分かっていても咄嗟に出てこないことがあります。6問の選択式クイズで、キー操作を自分の頭で組み立てる練習ができます。
検証環境:macOS + Vim 9.1.1752。掲載している:registersの出力と、6問すべての解答は実機で確認しています。
解く前に
各問題を見て、まず自分なりの答えを頭の中で決めてから選択肢を確認すると効果的です。答え合わせだけを目的にすると記憶に残りにくいので、実際にVimを開いて手を動かしながら確認するとさらに定着しやすくなります。
手を動かす下準備
「レジスタの中身がどう変わるか」は、頭で追うより一度見てしまうほうが早いです。適当なファイルに4行ほど書いて、次の3操作を順に実行してみてください。
yy " 1行ヤンク
j dd " 次の行へ移って1行削除
j x " さらに次の行で1文字削除
この状態で:registersを実行すると、それぞれ別のレジスタに入っていることが一目で分かります。手元のVim 9.1での実際の出力です。
Type Name Content
c "" d
l "0 alpha^J
l "1 bravo^J
c "- d
最後にやったxの結果が無名レジスタ""と小削除レジスタ"-に、ヤンクした行が"0に、削除した行が"1に入っています。この画面を一度見てから解くと、以下の問題の答えが「暗記」ではなく「確認」になります。左端のlとcは行単位か文字単位かの区別で、貼り付けたときの入り方が変わります。
問題1
インサートモードで、名前付きレジスタ"aの内容を挿入するキー操作はどれですか?
- "ap
- Ctrl-r a
- Ctrl-a
- "a
答えを見る
2. Ctrl-r a。インサートモードでのレジスタ挿入はCtrl-r系で統一されています。"apはノーマルモード用の記法です。モードごとの記法はこちらで一覧にしています。
問題2
ノーマルモードで、番号付きレジスタ"3の内容をカーソルの後に貼り付けるキー操作はどれですか?
- Ctrl-r 3
- "3p
- 3p
- "-3p
答えを見る
2. "3p。ノーマルモードでレジスタを指定する記法は"{レジスタ名}を貼り付けコマンドの前に置きます。3pは無名レジスタを3回貼り付ける、という別の意味になります。番号付きレジスタがどう更新されていくかはこちらで詳しく扱っています。
問題3
直近にヤンクした内容を、その後の削除操作に関係なく貼り付けたいときに使うレジスタ指定はどれですか?
- ""p
- "0p
- "1p
- "-p
答えを見る
2. "0p。"0はヤンク専用のレジスタで、途中の削除操作の影響を受けません。無名レジスタ("")は削除のたびに上書きされてしまいます。
問題4
削除した内容をどのレジスタにも残さず、完全に破棄したいときに使うのはどれですか?
- "-dd
- "_dd
- "0dd
- ".dd
答えを見る
2. "_dd。ブラックホールレジスタ"_に書き込んだ内容はどこにも保存されません。他のレジスタの中身を保護したまま削除したいときに使います。
問題5
今開いているファイルの名前をノーマルモードで貼り付けたいときはどれですか?
- ".p
- ":p
- "%p
- "#p
答えを見る
3. "%p。"%はカレントファイル名を保持する読み取り専用レジスタです。"#は直前に開いていた別ファイル(alternate file)の名前になります。
問題6
コマンドラインモードで:%s/と打った状態から、レジスタaの内容をパターンとして挿入したいときはどれですか?
- "ap
- Ctrl-r a
- Ctrl-v a
- @a
答えを見る
2. Ctrl-r a。コマンドラインモードもインサートモードと同じCtrl-r系の記法を使います。@aはレジスタaをマクロとして実行するコマンドで、挿入とは別物です。
こうした選択式の練習を自分で作ってみると、普段なんとなく指が覚えている操作でも、いざ言葉で説明しようとすると詰まる部分が意外と多いことに気づきます。特にブラックホールレジスタは知識としては知っていても、とっさに使う場面を思いつけないことが多くありました。
まとめ
レジスタ操作はモードによって記法が変わる点が最大のつまずきポイントです。"{reg}系とCtrl-r系という2系統に整理して覚えると混乱しにくくなります。レジスタ全体の一覧はこちらで扱っています。