Vz Editor
2005-11-14T21:13:36+09:00

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

番号記号初期キー機能
#07#s^S [<--]

s==0(編集モード)

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

ファイル先頭で実行した場合,カーソルは移動できず命令失敗でrに-1(通常は成功で0)を返します。

マクロでファイル先頭に向かっての処理では,返り値を判定しないと無限ループに陥る可能性があります。cpはオフセット値なので大きなファイルではあてになりませんし,ロングポインタは煩雑なので推奨しません。

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

編集モードと異なり,入力窓の左端で実行しても返り値は得られません。このため入力窓の左端にカーソルがあるかどうかを判定するには,lx(表示カーソルの桁位置)を参照します。無条件で左端にカーソルを移動してよいのであれば,#<(論理行頭への移動)を使用します。

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

生のDOSプロンプトと異なり,カーソルを移動しても文字は消去されないので,編集を加えることもできます。編集モードと異なり,コマンドラインの左端で実行しても返り値は得られません。このためコマンドラインの左端にカーソルがあるかどうかを判定するには,lx(表示カーソルの桁位置)を参照します。無条件で左端にカーソルを移動してよいのであれば,#<(論理行頭への移動)を使用します。

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

s==4(メニュー)

戻り値rの内容

= test = by H_ear
#if 0
メニューで押した特殊キーの戻り値を見る
#endif
* mad for VZ!
1 ^\ "" ?. !01 &> (r!=-1)?>^ &d #] .                    ;リードオンリーメニュー
;       (s)?. !01 (r==-1 || r==0)?{ &> . } &> >^        ;カーソル表示メニュー
0:
#if tVZ
        &m("Result: %d %u $%x %b / &$FF: $%02x(%d)['%c'] {&%02d}",r,r,r,r,a,a,a,$ff-a)
#else
        &m("Result: %d %u $%x / &$FF: $%02x(%d)['%c'] {&%02d}",r,r,r,a,a,a,$ff-a)
#endif
        (r)
* p
1       "",34,1,,-1
        "...Hit any key ↑=FF05h ↓=FF06h"
*

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

無効


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