Try Dynamic Macro at the | Experience Page | ! |
Usage | More Usage | Download | Customize | History | Paper | ML | Japanese page |
abcabcと入力した後 を押すと、 Dynamic Macroは
abc
の入力操作の
繰返しを検出してそれを再実行します。
その結果テキストは
abcabcabcとなります。また、
abcdefabと入力した後 を押すと、 Dynamic Macroはこれを
abcdef
の
入力の繰返しと判断し、
繰返しの残りの部分を予測実行して cdef
を入力し、
テキストは
abcdefabcdefとなります。
ここでもう一度
を押すと、
abcdef
の入力が繰り返されて、
テキストは
abcdefabcdefabcdefとなります。
カーソル移動などを含むあらゆるキー操作の繰返しが により再実行されるため、例えば
line1 line2 line3 line4というテキストを
% line1 % line2 line3 line4のように編集した後 を押すと、テキストは
% line1 % line2 % line3 line4のようになり、その後押すたびに次の行頭に
%
が
追加されていきます。
このような機能は、繰返しパタンの認識により
キーボードマクロを自動的に定義していると考えることもできます。
キーボードマクロの場合は
操作を開始する以前にそのことをユーザが認識してマクロを登録する必要がありますが、
Dynamic Macro では 実際に繰返し操作をしてしまった後でそのことに気がついた場合でも
を押すだけでその操作を再実行させることができます。
また、キーボードマクロを定義する場合は
マクロの開始と終了を間違えずに指定する必要がありますが、
Dynamic Macroでは
を押すだけでよいので簡単です。
例えば、「かわいいかわいい」という入力では「かわいい」と
いうパタンが繰り返されたという解釈と、「い」というパタンが
繰り返されたという解釈の両方が可能ですが、この場合
「かわいい」を優先します。
例えば「abracadabra」という入力では、[s]=「abra」が最長なので
[s] [t]=「cadabra」の予測が優先されます。
今回(2002/6)新しくWebで公開した版は、
小畑英司氏と峰伸行氏によりXEmacs でも動作するように改造していただいたもので、
Super, Hyper, Alt キーにも対応しています。
GNU Emacs 18, 19, 20, 21, XEmacs 21 で動作することが確認できています。
これをVersion 2.0とし、これ以前の版は1.0とします。
活用例
文字列置換
テキスト中の全ての「abc」を「def]に修正する場合を考えてみます。
「abc」を検索するキー操作は
Ctrl-S a b c ESC で、これは
DEL DEL DEL d e f で「def」に修正することができます。
引き続き次の「abc」を検索する Ctrl-S a b c ESC を入力した後で
を押すと DEL DEL DEL d e f が予測実行され、新たに
検索された「abc」が「def」に修正されます。ここでまた
を押すと次の「abc」が「def」に修正されます。
このように
を押していくことにより順々に文字列を置換していくことができます。
罫線によるお絵書き
繰返しを含む絵を簡単に書くことができます。例えば、
─┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐
└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘
のような絵を書きたい場合は、keisen.el などを使って
─┐┌┐
└┘
と書いた後で「繰返し」キーを押すと、
─┐┌┐
└┘└┘
となり、もう一度
を押すと
─┐┌┐┌┐
└┘└┘└┘
となります。同様に
┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐
└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘
のような絵も
┌─┐ ─
└─┘
だけ入力した後
を連続して押すだけで描くことができます。
繰返し予測の方法
入力の繰返しの予測手法はいろいろ考えられますが、dmacro.elでは
以下のような優先度をもたせています。
Customize
.emacsなどに以下の行を入れて下さい。
(defconst *dmacro-key* "\C-t" "繰返し指定キー")
(global-set-key *dmacro-key* 'dmacro-exec)
(autoload 'dmacro-exec "dmacro" nil t)
*dmacro-key*
の設定については
以下のような注意が必要です。
Modifier key として Control のみが使われる場合は
\C-t のような
文字列として指定できます。Meta, Super, Hyper, Alt を利用する場合には
それぞれ [?\M-t], [?\s-t], [?\H-t], [?\A-t] のように指定して下さい。
Meta key を使う場合でも上記のような制限はありません。Super 等を使う
場合には [(super t)] のように指定して下さい。
歴史
Dynamic Macroは増井により1993年に開発されたシステムです。
メーリングリスト
QuickMLを利用して
Dynamic Macroメーリングリストを運用しています。
参加ご希望の方は
To: dmacro@quickml.com
Cc: masui@pitecan.com
From: (自分のアドレス)
MLに参加します
というメールを送って下さい。
本文は空でなければ何でもかまいません。
増井俊之
@ Pitecan.com
masui@ptiecan.com
$Date: 2002/06/08 09:40:53 $ $Revision: 1.2 $