Vz Editor
2007-04-21T08:07:40+09:00

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

番号記号初期キー機能
#25#P^QNファイル名の複写

s==0(編集モード)

現編集ファイルのドライブ名から始まるフルパスのファイル名をカーソル位置に出力する。

&?("%s",wa+146)と等価のコマンドで,アクティブな編集ファイルのテキスト構造体からの出力のため,nm(編集ファイルの相対パス名)と異なり,必ずドライブレターを含むフルパスのファイル名であり,編集モード以外でも実行可能となっている。当然,編集ファイルがない状況では実行結果は保証されない。

戻り値 r:常に 0

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

編集モードと同じ

ファイルオープン系の入力窓での使い方は工夫次第。

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

編集モードと同じ

コマンドラインにフルパスのファイル名を出力できるので,パスの通っていないディレクトリにある現ファイルをコマンドの引数にすることが簡単にできる。

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

無効

ファイラー専用コマンド#PはPath/Mask入力窓になっていることに注意。

s==4(メニュー)

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

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

無効

マクロによる拡張

裏ファイルのフルパスを出力する拡張例

1 ^\ "" (s>2)?.
        (ks&1 && wc>1)?{                ;裏テキストがあるときだけ
                &s &?("%s",wb+146) &d . ;wb:裏テキストのワーク
        }?#P                            ;通常はこちらだけ

これはあまりよい例ではない。シフト起動で別のマクロを実行したようなものだ。

選択ファイルのフルパスを出力する拡張例

25 ^QN ""
        (s || wc<1)?.                   ;コンソールのみオープン時は終了
        ss-, p[, wn[, wl[7, #T wl],     ;#T:テキスト選択メニュー
 :p     &p (r!=#m)?{ &o(r) >p }         ;&o(r)が2個あるのが美しくないが
        &s &o(r)                        ;ここで&sでないと画面がバタつく
        p=wa+146, &#T(0])               ;場所を記憶して元のファイルに戻る
        &?("%s",p) p],                  ;選択したファイルのフルパスを出力
        &d #]                           ;なんか表示上の副作用があるような(^^;

これもあまりよい例とは言えない。拡張と言いながら#25そのものを使っていないから。

テキスト二重化に利用する例

1 ^\ "" ?. a=id,
        #R #P #m
        (wt)?{ #W &#T(-a) }?{ &#Y(2) }

コマンドの拡張ではなく,#25を利用するマクロの例である。#25の利用により,基本的な機能の実現は3ステップの1行で済んでしまう。

現ファイルの存在するディレクトリを開く例

1 ^\ "" ?.
        (s || wc<1)?.                   ;コンソールのみオープン時は終了
        #O #P &s                        ;カーソルは末尾にある
        (-1){ #s (cd=='\')?{} }         ;'\'の位置まで戻る
        #d #l &d #m                     ;ファイル名先頭以下を切り取って[CR]

これもコマンドそのものの拡張ではないが,結構需要のある機能になるだろう。


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