Emacs で連番を挿入する方法について、ブログが続かないわけさんがまとめてらっしゃる。
Ruby のワンライナーを使ったり、キーボード・マクロの C-x C-k C-c (Macro counter value) を使う方法など、ぼくの知らない方法が目白押し。気になる方は是非上記エントリーを参照されたし。
Emacs の register を使う方法
ぼくが「連番」を振る時は、Emacs の register 機能を使っていた。この方法は、上記エントリーに記述がなかったので簡単に書いてみる。
Emacs には register というマーカーやウィンドウ状態を保存できる領域がある。この register には数字も保存できる。数字を操作するのに使うコマンドは、以下の 3 つ:
- C-u NUMBER C-x r n R
- レジスター文字「R」に数「NUMBER」を保存する
- C-u NUMBER C-x r + R
- レジスター文字「R」に保存されている数に「NUMBER」を足す
- C-x r i R
- レジスター文字「R」に保存されている数を挿入する
例えば、レジスター文字「a」に数字を入れて、「1234」と入力する場合、次の様にコマンドを打つ。
C-u 1 C-x r n a ; レジスター「a」に数字 1 を保存 C-x r i a ; レジスター「a」(中身 1) を挿入 C-u 1 C-x r + a ; レジスター「a」の数字を 1 増やす C-x r i a ; レジスター「a」(中身 2) を挿入 C-u 1 C-x r + a ; レジスター「a」の数字を 1 増やす C-x r i a ; レジスター「a」(中身 3) を挿入 C-u 1 C-x r + a ; レジスター「a」の数字を 1 増やす C-x r i a ; レジスター「a」(中身 4) を挿入
Keyboard Macro との併用
レジスターを使った連番挿入は、キー・ストロークが多くて大変。そこで、キーボード・マクロを併用する。例えば
1. 2. 3. 4.
という結果が欲しい場合は次の様にする。
C-u 0 C-x r n a ; レジスター「a」に数字 0 を保存 C-x ( ; キーボード・マクロ開始 C-u 1 C-x r + a ; レジスター「a」の数字を 1 増やす C-x r i a ; レジスター「a」を挿入 C-e ; 行末へ移動 . RET C-x ) ; キーボード・マクロ終了 C-x e ; キーボード・マクロ実行 e e e ; 連続実行
以上。
レジスターの扱いに慣れると、複雑な処理をキーボード・マクロで組むことができる様になる。憶えておいて損はない。
No comments:
Post a Comment