単一のキーや M-x command-name RET で呼び出すような多くの単純なコマンドは、繰り返し回数として機能する数値引数を指定して呼び出すことで、繰り返し実行できます(数値引数 を参照)。ただし、繰り返したいコマンドが入力を求めたり、数値引数を別の方法で使用したりする場合は、その方法は使えません。
コマンド C-x z (repeat)
は、Emacsコマンドを複数回繰り返すための別の方法を提供します。このコマンドは、直前のEmacsコマンドが何であったかにかかわらず、それを繰り返します。コマンドを繰り返す際は、前回使用されたものと同じ引数が用いられ、その都度新しい引数が読み込まれることはありません。
コマンドを複数回繰り返すには、zをさらに入力してください。zを入力するごとに、コマンドがもう1回繰り返されます。z以外の文字を入力するか、マウスボタンを押すと繰り返しが終了します。
例えば、C-u 2 0 C-d と入力して20文字を削除したとします。C-x z z z と入力することで、そのコマンド(引数を含む)をさらに3回繰り返し、合計80文字を削除できます。最初の C-x z でコマンドが1回繰り返され、それ以降の z でそれぞれさらに1回ずつ繰り返されます。
また、repeat-modeを有効にすると、2つ以上のキーのシーケンスにバインドされたコマンドを、単一の文字を入力することで繰り返し実行できるようになります。例えば、C-x u(undo、Undoを参照)を入力して直近の編集を取り消した後に、u u u…と入力することで、さらに多くの編集を取り消すことができます。同様に、C-x o C-x o C-x o…の代わりにC-x o o o…と入力すれば、数ウィンドウ先のウィンドウに切り替えることができます。これは、コマンドを呼び出す完全なキーシーケンスを入力した後、一時的な繰り返しモードに入ることで動作します。単一キーのショートカットはエコーエリアに表示されます。
repeat-mode
で繰り返しがサポートされているコマンドは一部のみです。どのコマンドが対応しているかを確認するには、M-x describe-repeat-maps RET と入力してください。
トランジェント・リピートモードによって有効になる1文字のショートカットは、必ずしも同一である必要はありません。例えば、C-x { と入力した後、{、}、^、v
のいずれか、あるいはこれらの文字を任意の順序で組み合わせた任意の系列を入力すると、選択中のウィンドウがそれぞれ異なる方法でリサイズされます。同様に、M-g n または M-g p の後に、n および/または p を任意の組み合わせで入力すると、next-error と previous-error
が繰り返され、*compilation* または *grep* のバッファ内で移動します(コンパイルモード を参照)。
前回のコマンドを繰り返すように定義されたキー以外のキーを入力すると、一時的な繰り返しモードが解除され、入力したキーが通常通り実行されます。また、解除の原因となったキーを実行せずに、一時的な繰り返しモードを解除するキーを定義することも可能です。そのためには、ユーザーオプション repeat-exit-key をカスタマイズしてキー名を指定してください。自然な値としては RET
が挙げられます。最後に、一定時間のアイドル後に繰り返しチェーンを自動的に中断させることも可能です。ユーザーオプション repeat-exit-timeout
をカスタマイズして、この一時的な繰り返しモードが自動的にオフになるまでのアイドル時間を秒単位で指定してください。