Vz Editor
2018-09-09T21:55:56+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(メニュー)

戻り値rの内容

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.