君の知らない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',...