Vz Editor
2005-11-30T06:07:24+09:00

コマンド拡張で学ぶVZマクロ入門 #14(#h)

番号記号初期キー機能
#14#h^H [BS]バックスペース

s==0(編集モード)

返り値 r:0=成功,-1=失敗(ファイルの先頭)

削除した文字は(通常のux無効の状態であれば)削除バッファに格納され,(mg..-3).-3 に存在(2バイト文字なら(mg..-3).-4)します。なお,mg..-3は削除バッファの終端で,次に削除された文字はこの位置から格納されます。

格納された文字の次に2バイトのサイズ情報があり,最上位の1ビットが削除方向を示すフラグになっています。削除方向とは[DEL]系の操作か[BS]系の操作かで異なり,#u(削除文字(列)の復活)実行時の出力後カーソル位置に反映される。[BS]系の削除ではフラグが立ちません。[DEL]系の削除で格納された場合は8000hがサイズ情報に加算されます(先頭1ビットが1になり「フラグが立つ」とも言います)。

削除バッファはpq..131の指すアドレスにあり,bc(削除文字列バッファのサイズ)で指定されたサイズのバッファです。削除バッファの直後はpu(ユーザーバッファ:マクロ配列領域の先頭)があり,削除バッファの先頭はpu-bcでもあります。

abcと入力したのち#hを三度実行すると,1文字ずつ削除された文字は次のようなイメージで削除バッファに格納されます。

┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─────
│ c│01│00│ b│01│00│ a│01│00│
└─┴─┴─┴─┴─┴─┴─┴─┴─┴─────
                                ∪    ↑mg..-3
                                ↑(mg..-3)..-1
                          ↑(mg..-3).-3
                          ↑(mg..-3)-((mg..-3)..-1)&$7fff+2

s==1(文字列入力モード)

編集モードと同じ

s==2(コマンドラインモード)

編集モードと同じ

s==3(ファイラーモード)

無効

初期設定では[BS]が上位のディレクトリに移動するキー

s==4(メニュー)

→メニューの返り値に関する説明

s==4(1文字入力モード)

無効

マクロによる拡張例

14 ^H ""        ;BS/overhead[\] org:Emmett
        (ks&1)?#s #h ?. #d

シフト起動すると,2文字前の文字を削除します。


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