Next: , Up: キーボードマクロ   [Contents][Index]


18.1 基本的な使い方

F3

キーボードマクロの定義を開始します(kmacro-start-macro-or-insert-counter)。

F4

キーボードマクロを定義しているときは定義を終了します。それ以外の場合は一番最近のキーボードマクロを実行します(kmacro-end-or-call-macro)。

C-u F3

最後のキーボードマクロを再実行してから、キーをマクロ定義に追加します。

C-u C-u F3

最後のキーボードマクロを再実行せずに、キーをマクロ定義に追加します。

C-x C-k r

リージョンの中の各行の行頭にたいして、最後のキーボードマクロを実行します(apply-macro-to-region-lines)。

C-x (

(旧スタイル)キーボードマクロの定義を開始します(kmacro-start-macro)。プレフィクスキーを与えると最後のマクロにキーを追加します。

C-x )

(旧スタイル)マクロ定義を終了します(kmacro-end-macro)。プレフィクス引数はそのマクロ自体を除外した繰り返し回数として機能します。

C-x e

もっとも最後に定義したキーボードマクロを実行します(kmacro-end-and-call-macro)。プレフィクス引数は繰り返し回数として機能します。

キーボードマクロの定義を開始するには、F3をタイプします。それからはキーを入力して実行を続けますが、それは同時にマクロ定義の一部になります。その間は、モードラインに‘Def’が表示されて、マクロの定義中であることを示します。終了するときはF4 (kmacro-end-or-call-macro)をタイプして、定義を終了します。たとえば、

F3 M-f foo F4

これは1単語前方に移動してから、‘foo’を挿入するマクロを定義します。F3F4は、マクロの一部とはならないことに注意してください。

マクロを定義した後は、F4でそれを呼び出すことができます。上記の例では、それはM-f foo againをタイプしたのと同じ効果をもちます(F4コマンドの2つの役割に注意してください。これはマクロを定義しているときはマクロの定義を終了し、そうでないときは最後のマクロを呼び出します)。F4に数引数‘n’を与えることもできます。これはマクロを‘n’回呼び出すことを意味します。引数に0を与えると、エラーになるか、C-g(MS-DOSではC-Break)をタイプするまで、マクロを永久に繰り返します。

上記の例は、キーボードマクロを使った便利なトリックをデモンストレイトする例です。テキストの一定間隔の位置にたいして繰り返し操作を行いたいときは、マクロの一部に移動コマンドを含めます。この例ではマクロの繰り返しにより、連続する単語の後ろに文字列‘foo’を挿入していきます。

キーボードマクロの定義を終了した後でも、C-u F3をタイプすることにより、マクロの定義にキーストロークを追加できます。これはF3に続けてマクロの定義を再タイプするのと同じです。結果として、そのマクロの以前の定義が再実行されることになります。変数kmacro-execute-before-appendnilに変更すると、既存のマクロにキーストロークが追加されるまでは実行されません(デフォルトはt)。最後に実行したキーボードマクロを再実行することなく、定義の最後にキーストロークを追加するには、C-u C-u F3をタイプしてください。

コマンドがミニバッファーから引数を読みとる場合、ミニバッファーにたいする入力は、コマンドと一緒にマクロの一部となります。したがってマクロを再生すると、そのコマンドの引数は入力されたのと同じになります。たとえば、

F3 C-a C-k C-x b foo RET C-y C-x b RET F4

これはカレント行をkillして、バッファー‘foo’にそれをyankした後、元のバッファーに戻ります。

ほとんどのキーボードコマンドは、キーボードマクロの定義で普通に機能しますが、いくつか例外があります。C-g (keyboard-quit)をタイプすると、キーボードマクロの定義が終了します。C-M-c (exit-recursive-edit)は信頼できません。これはマクロの中で再帰編集(recursive edit)を開始したときは期待通りに再帰編集から抜け出しますが、キーボードマクロの呼び出し前に開始された再帰編集を抜け出すには、キーボードマクロからも抜け出す必要があります。同様に、マウスイベントもキーボードマクロで使用できますが。信頼はできません。マクロによりマウスイベントが再生されるときは、マクロを定義したときのマウス位置が使用されます。この効果は予測が困難です。

コマンドC-x C-k r (apply-macro-to-region-lines)は、リージョン内の各行のにたいして、最後に定義されたキーボードマクロを繰り返します。これは1行ずつポイントをリージョン内の行頭に移動してからマクロを実行します。

上記で説明したF3F4に加えて、Emacsはキーボードマクロを定義したり実行するための、古いキーバインドもサポートします。F3と同様にマクロ定義を開始するには、C-x ( (kmacro-start-macro)とタイプします。プレフィクス引数を指定すると、最後のキーボードマクロの定義に追加します。マクロ定義を終了するにはC-x ) (kmacro-end-macro)とタイプします。一番最近のマクロを実行するには、C-x e (kmacro-end-and-call-macro)とタイプします。マクロ定義中にC-x eを入力すると、マクロ定義を終了してからすぐに実行されます。C-x eをタイプした後すぐにeをタイプすることにより、そのマクロを1回以上繰り返すことができます。(マクロの実行に使用されるときの)F4と同様、C-x eには繰り返し回数を引数指定できます。

C-x )に、繰り返し回数を引数として与えることができます。これはマクロを定義した後、すぐにマクロが繰り返されることを意味します。マクロの定義は、定義することによりマクロが実行されるので、最初の1回として数えられます。したがってC-u 4 C-x )は、マクロを3回すぐに追加実行します。

長時間キーボードマクロを実行中に、(どれほど実行されたかを示すために)再表示をトリガーできれば便利なときがあるかもしれません。このためにC-x C-k dを使用できます。とても便利とは言えない例ですが、C-x ( M-f C-x C-k d C-x )C-u 42 C-x eと実行した際に、繰り返しごとに再表示を行うマクロを作成します。