次: , 上: Keyboard Macros


28.3.1 基本的な使い方

キーボードマクロの定義を開始するには、C-x (コマンド (start-kbd-macro)を打ってください。 それ以降打鍵するものは通常どおり実行されますが、 それと同時にキーボードマクロの定義として取り込まれます。 モード行にもそのことを表す`Def'という表示が現れます。 定義の終りまできたら、C-x )end-kbd-macro)を打ち込むと キーボードマクロの定義が完了します (C-x )はマクロの内容には含まれません!)。 たとえば、

     C-x ( M-f foo C-x )

のように打鍵すると、 1単語分ポイントを前進させ文字列`foo'をバッファに挿入する、 キーボードマクロを定義できます。

定義し終えたキーボードマクロは、 コマンドC-x ecall-last-kbd-macro)で再実行できますし、 数引数として反復回数を指定することで多数回実行することもできます。 C-x )にも引数として反復回数を指定でき、 その場合は定義完了とともにただちに指定した回数だけ キーボードマクロを実行しますが、 定義しているとき(実行しているので)を1回目の実行として数えます。 ですから、C-u 4 C-x )と打つと、キーボードマクロをただちに3回実行します。 C-x eC-x )に反復回数0を指定すると、 キーボードマクロを無限回、つまり、エラーが発生するか、 C-g(MS-DOSではC-<BREAK>)が打鍵されるまで、 繰り返し実行します。

テキスト上の規則的にとびとびの位置に対して操作を行いたい場合には、 キーボードマクロを定義するときに、つぎに適用したい位置までポイントを 移動するコマンドを含めておきます。 たとえば、各行について変更を行いたければ、 ポイントを行頭に置いてからキーボードマクロを定義し始め、 最後にポイントをつぎの行の行頭に置いたところで定義を終えます。 キーボードマクロを繰り返し実行すると、 次々と連続する行に対して操作を実行できます。

キーボードマクロの定義を完了してしまったあとでも、 C-u C-x (を打ち込めば、その定義の末尾に内容を追加できます。 このコマンドは、C-x (に続いて現在のキーボードマクロの 定義内容全体を打鍵したのと同じ効果を持ちます。 その結果、定義されたとおりにマクロを再実行します。

キーボードマクロの中で、通常のキーと同様にファンクションキーを 使うこともできます。 マウスイベントを使うことさえできますが、その場合は注意してください。 キーボードマクロはマウスイベントを再現しますが、 マウス位置としては最初にキーボードマクロを定義したときの位置が そのまま使われます。 その結果は予想し難いものになります。 (現在のマウス位置を使っても、結果はさらに予想し難いものになる。)

キーボードマクロの中で必ずうまくいくとは限らないことの1つに、 C-M-cexit-recursive-edit)コマンドがあります。 このコマンドがマクロの中で開始させた再帰編集を終らせる場合には、 期待どおりに動くでしょう。 しかし、このコマンドがキーボードマクロを起動するまえに入っていた再帰編集を 終らせるとすると、 その終了処理の過程でキーボードマクロの実行も終らせてしまいます。

定義済みのキーボードマクロを編集するには、 C-x C-kedit-kbd-macro)と打ちます。 このコマンドに続けてマクロを起動する打鍵、つまり、 C-x eM-x nameなどのキー列を入れます。 すると、キー列に対応するキーボードマクロの内容が整形されて 特別な編集用メジャーモードのバッファに入ります。 そのバッファ中でC-h mと打つと編集方法が表示されます。 編集し終えたらC-c C-cと打ちます。

コマンドM-x apply-macro-to-region-linesは最後に定義された キーボードマクロを現在のリージョンの各行に対して実行します。 つまり、各行について、行頭にポイントを置いてからキーボードマクロを実行します。