Vz Editor
2005-11-14T20:57:32+09:00

コマンド拡張で学ぶVZマクロ入門 #01

番号記号初期キー機能
#01^[直前のコマンド実行

直前のコマンドを再度実行するコマンドです。運が良ければ?直前のマクロも実行できます。マクロ中では使用できません。次の例のようにマクロの中に記述しても何も起こらず,失敗を示す値(-1)が返されます。

1  "" ?.
        #s #01 #01 #01          ;(4){ #s } のつもり

本当に直前の「コマンド」か?

直前に実行した「コマンド」を再度実行するのであれば,次のマクロを実行した直後に#01を実行することで,直前のコマンドを示す変数(cm)に値が代入されている#08が実行されるはずです。

1 ^\ "" ?.
        #07 cm=8,

ところが,実行されるコマンドは#07の方になります。

先のマクロの実行キーを外して,

1    "" ?.
        #07 cm=8,

…とし,マクロメニューから実行しておきます。そして,#01を実行すると再度マクロメニューが表示されます。

つまり,#01の機能は「直前のコマンド実行」ではなく,「直前のコマンドキーの再現」であろうという想像がつきます。そのため,直前のコマンドだけでなく,直前のマクロも再実行できるわけです。「運が良ければ」というのは,直前に実行したマクロがマクロメニューなどから呼ばれていた場合,呼出元のマクロメニューの方が実行されてしまって,目的のマクロが実行されるわけではないからです。


コマンド拡張で学ぶVZマクロ入門 #01
The VZ resources, valid XHTML 1.0 Strict. ©2005 by mezala.