君の知らないVimレジスター
 この記事は  Vim Advent Calendar 2013  90日目の記事になります。   どうも、一足早い春休みに突入したもぷりです。  しかし春と言っても、まだまだ、寒いですねー。  先日からneovimの話題でもちきりですが、Vim本体についての紹介です。    今回はレジスタの話です。  まずは、ヘルプを見てみましょう。   :help registers レジスタには 9 種類ある:     *registers* *E354* 1. 無名レジスタ "" 2. 10個の番号付きレジスタ "0 から "9 3. 小削除用レジスタ "- 4. 26個の名前付きレジスタ "a から "z または "A から "Z 5. 4個の読み取り専用レジスタ ": と ". と "% と "# 6. expression 用レジスタ "= 7. 選択領域用レジスタ "* と "+ と "~ 8. 消去専用レジスタ "_ 9. 最終検索パターン用レジスタ "/    意外と種類がありますね。   詳しくはそのままヘルプを読めばわかると思います。     そして、このレジスタはなんとインサートモードから呼び出すことが可能です。   やり方はインサートモードで   <C-R> レジスタ   です。     これを使ったテクニックを紹介します。   まずは、実践Vimにも記述されているものです。   <C-R>={何か式}  インサートモードにて入力すると、コマンドモードに=が現れて続けて入力ができます。  例えば、四則演算などの簡単な式を埋め込みたいときなどに有用です。  メモリアドレスの計算なんかしたいときなど  「<C-R>=0xA000 - 0x0909」 と打てば 「38647」 と表示されます。  おっと、これは10進数です。メモリアドレスなんだから当然16進数がいいですね。   ここで、入力できるのは計算式ではなくVimにとっての式であるというのが便利ポイントです。  「<C-R>=printf('0x%x',...
