Vz Resources
Commands
2018-05-20T07:52:56+09:00

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

番号記号初期キー機能
#39-^QE ^[Home](NEC-98:^[UP])画面の上端へ移動

現在表示している画面の上端にカーソルを移動する。桁位置に変更はないが,漢字等2バイト文字に係る再表示を伴う場合は,x位置が更新される可能性がある。

画面の上端とは,システム変数lyが0を示すときのy座標で,テキストレコードのwa.6に保存されている。

#39を実行するとカーソルの存在する[論理|表示]行が変更される。カーソル行を変更することなく,画面上のカーソル位置を上端にしたい場合(View Pointの更新)は,標準搭載マクロ「表示位置変更」([CLR] or \[HOME])の機能のひとつを使う。

関係するオプション
以下のオプションが「画面の上端に移動」に関係する。
オプション機能
Es[Ctrl]+[↑][↓](^QE/^QX)を2回実行でスムーズスクロール開始
[NEC-98固有機能]
関連バグ/仕様
&s(サイレントモード)で #_ #39(#_ #38 も同様)を実行した時,ファイルの末尾を誤認するという報告がある。(dc15#5665:Emmett)

s==0(編集モード)

画面の上端へ移動

戻り値 r:0=正常終了(画面の上端に移動), -1=スムーズスクロール/ジャンプ起動(Es が + で画面上端のとき)

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

無効

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

無効

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

無効

s==4(メニュー)

戻り値rの内容

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

無効

マクロによる拡張

現カーソル行を画面の上端へ移動

注:当コマンドの拡張ではない。

何らかの処理の実行後にカーソル行を画面の上端に移動したいという要求はありがちだ。例えば,一定の書式を見出しに持つ文書を閲覧するときのページャ等であろう。次の見出しを検索して移動し,見出しの位置を画面上端に固定することにより,内容をより多く参照できたり,逆に内容が少ない場合でもカーソル行のブレを生じさせずにすむ。

実際の手法は,ky(保存したカーソルのウィンドウ内のy位置)に0(ゼロ)を格納して&d(画面の再表示)を実行すればよい。

1 ^[CR] "前後の見出し" ?.
        RX[+, mp[=2,    ;正規表現を有効にした検索モード
        ps[="^@",       ;検索文字列設定
        &s              ;サイレントモード
        (ks&1)?#r ?#c   ;シフト実行なら後方検索
        ps],            ;実行前の状態に戻す
        mp], RX],
        (r)?{           ;r== 正常終了:0 / 失敗:-1
                &m(19)  ;失敗したら「見つからない」表示
        }?{
                ky-,    ;カーソル行のy位置をリセット
        }
        &d #] .         ;再表示

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