すべての定義されたキーボードマクロは、キーボードマクロリング(keyboard macro ring)に記録されます。キーボードマクロリングはすべてのバッファーで共有され、1つだけしかありません。
リングの先頭にあるキーボードマクロを実行します(kmacro-end-or-call-macro-repeat
)。
キーボードマクロリングを、次のマクロ(古く定義されたもの)にローテートします(kmacro-cycle-ring-next
)。
キーボードマクロリングを前のマクロ(新しく定義されたもの)にローテートします(kmacro-cycle-ring-previous
)。
キーボードマクロリングを操作するすべてのコマンドは、同じC-x C-kを使います。これらのコマンドでは、すぐ後にコマンドを実行して繰り返す場合には、互いにC-x C-kプレフィクスを必要としません。たとえば、
C-x C-k C-p C-p C-k C-k C-k C-n C-n C-k C-p C-k C-d
これは、キーボードマクロリングを2つ前のマクロが先頭にくるようにローテートして、3回実行します。次にキーボードマクロリングをローテートして、元は先頭だったマクロを先頭に戻して1回実行します。次にキーボードマクロリングを1つ前のマクロが先頭にくるようにローテートして、それを実行します。そして最後にそれを削除しています。
コマンドC-x C-k C-k
(kmacro-end-or-call-macro-repeat
)は、マクロリングの先頭にあるキーボードマクロを実行します。もう一度すぐにC-kをタイプすると、マクロを繰り返すことができます。すぐにC-nかC-pをタイプすれば、マクロリングをローテートすることができます。
キーボードマクロを定義しているとき、C-x C-k C-kはF4と同様に振る舞いますが、すぐ後にタイプされた場合は異なります。このセクションで説明するほとんどのキーバインドは、C-x C-kプレフィクスが必要ない場合があります。たとえば、すぐにC-kをタイプした場合は、マクロを再実行します。
コマンドC-x C-k C-n (kmacro-cycle-ring-next
)およびC-x C-k C-p
(kmacro-cycle-ring-previous
)は、マクロリングをローテートして、次または前のキーボードマクロをリングの先頭に移動させます。新しく先頭となったマクロの定義は、エコーエリアに表示されます。お望みのマクロが先頭にくるまで、すぐにC-nまたはC-pを繰り返しタイプすれば、マクロリングのローテートを続けることができます。新しくマクロリングの先頭にきたマクロを実行するには、単にC-kをタイプします。
Emacsはマクロリングの先頭を、最後に定義されたキーボードマクロとして扱います。たとえば、そのマクロはF4で実行でき、C-x C-k nで名前をつけることができます。
キーボードマクロリングに格納できるマクロの最大数は、カスタマイズ可能な変数kmacro-ring-max
により決定されます。