Vz Resources
Commands
2019-05-07T21:05:28+09:00

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

番号記号初期キー機能
#57-^QO直前の置換の再実行

s==0(編集モード)

直前の置換の再実行

戻り値 r:置換した文字列の数

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

無効

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

無効

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

無効

s==4(メニュー)

戻り値rの内容

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

無効

マクロでの使用例

個数不定で連続する文字/文字列の削除

連続する空行の削除や,空白類の整理に利用できる。特に正規表現で削除できない改行を含む文字列を,簡単に整理することができる。


57 ^QO ""
        ?.
        #56 "\n\n\n" #m "\n\n" #m "ay"
 :L     (r)??.
        #57 >L

上記は2行以上の空行を整理して,空行は1行のみとする例である。もしも空行をすべて削除するなら「\n\n」→「\n」とすればよい。改行をすべて削除してしまうと後が大変かもしれないので,ヌル置換は勧めない。そのような必要がある場合は,ブロック指定を前提にするのがよいだろう。

なお,ラベルジャンプで擬似ループにしているが,ラベルジャンプが嫌いなら次のように無限ループの脱出手法を利用するとよい。


        (-1){ #57 (r)??{} }

#57により置換を重ねた場合に置換した文字列数を明示するには,ループの内部でrを加算してゆく必要がある。


        a-,
        #56 "\n\n\n" #m "\n\n" #m "ay"
        a+=r,
        (-1){ #57 a+=r, (r)??{} }
        &m("%u",a)

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