Vz resources : workshop
2004-09-21T00:00:00+09:00

拡張コマンド系

基本コマンド拡張

^Y 拡張ヤンク

概要

通常に実行すればコマンド#y(#47)と同じ動作になる。 シフトキーを押しながら実行すると,切り取った行やブロックをスタックに積まない。

47 ^Y "Cut[\ux+]"
        ?. (ks&1)? ux[+, #y ?. ux],

^J 拡張プット

概要

通常に実行すればコマンド#i(#48)と同じ動作になり,プット後のカーソル位置は編集スイッチEkに依存する。 シフトキーを押しながら実行すると,プット後のカーソル位置(Ek)を設定と逆にする。

48 ^J "Ins[\Ek!]"
        ?. (ks&1)? ek!, #i ?. ek!,

^N 拡張1行挿入

概要

通常に実行すればコマンド#n(#53)と同じ動作になり,空行を挿入する。 シフトキーを押しながら実行すると,和文の新しい段落として挿入した行の先頭に全角空白を置き,さらにFEPを起動する。(デフォルトではFEPの起動引数はMS-KANJI APIの10になっているので,VJEやATOKでは変更を要する)

53 ^N "New Line[\JP]"
        ?. (ks&1)??{ #n . }
        &s #< #m (2){ #n } " " &d &j(10)

概要

通常に実行すると,カーソルが行の途中にあるときはコマンド#<(#11)と同じ動作になり,カーソルが行頭の空白文字上にあるときはインデントをスキップして文字の先頭に移動する。 シフトキーを押しながら実行すると,直後に配置された表示行頭への移動を実行する。

11 ^[<--] "Head[\]"
        ?. (ks&1)?>>
        (lx+lh||ct-2)?#< ?#f
11 ^Q[ [HOME] ""
        ?. &x(0)

^[-->] 拡張行末

概要

通常に実行すると,カーソルが行の途中にあるときはコマンド#>(#12)と同じ動作になる。空白文字のある行末で実行すると,空白列の先頭(文字列の直後)に移動する。 シフトキーを押しながら実行すると,直後に配置された表示行末マクロを実行する。(例に挙げたものはT.Tanomura氏の表示行末移動マクロである)

12 ^[-->] "Tail[\]"
        ?. (ks&1)?>>
        x=lx, #?
        (x>lx)?.
        (ct<2) #> ??. &s
 :A     #s (ct==2)?>A
        #d &d
12 ^Q] [END] ""         ;T.Tanomura
        ?. &s
        ly[, kx-,
        #x (r)?#> ?#s
        ky], &d #]

^QF いきなり検索

概要

検索文字列を入力するだけで自動的に検索を実行する。その他の機能もあるが,詳細は文字列検索置換関連mp0常用者のいきなり検索・次検索を参照されたい。

55 ^QF ""
        ?. k20&ks,
        mp[,
        (ks&1)?{ &j(10) }
        #F &Cr &j(-1)
        (r)?{ mp], . }
        &s (k)?#r ?#c >01
35 ^R ""
        ?. (ks&1)??{ #r . } c-, >00
36 ^C ""
        ?. (ks&1)??{ #c . } c+, >00
0:      &s mp[=2, &o(#r+c) >>
1:      (r)?{ &o(#c-(cm-35)) &b(2) } mp], &d
        (r)?{ &m(19) }
           ?{ &m("%c",cm+'÷' ) }       ; ▲▽ (59:^_)('∞':↑↓)

^QK 対応する括弧の検索

概要

全角括弧にも対応した#58である。半角括弧上ではコマンド#58を実行し,全角括弧上ではマクロを実行する。詳細は文字列検索置換関連対応する全角括弧の検索を参照されたい。

58 ^QK ""
        ?. (ck)??{ #58 . }
        &s &#M(3)
        mp[, n+,
        &> &SF(a,cd) c=r, r-=a,
        b=(r/2)&1,      ;back
        #F      ; 開き括弧(vr1)|閉じ括弧(vr2) の順
        (b)?{ &?("\x %2s|%2s",c-2,c) }
           ?{ &?("\x %2s|%2s",c,c+2) } #m
        &02             ;search
 :q     (n)?{ &#U(3) &m("見つかりません") }
 :z     mp],
        &d #] .
0:      a3+$,."‘’“”()〔〕[]{}〈〉《》「」『』【】"
2:      ;-----  入れ子を数えて対応する括弧を検索
        ; ex. ( ……( …… )…… )
        ;  n+= +1     +1     -1     -1
        &o(#c-b)
        (r)??{
;               (b)?{ n-=1-vr&2, }?{ n+=1-vr&2, }
                n-=(b*2-1)*(1-vr&2),
                (n>0)?>^
        }

基本マクロ拡張

^KD 行・文字の複写

概要

製品版サンプルでもコマンドではなくマクロである「カーソル行の複写」は,?. #k #iだけの簡易なものである。VZマクロの手軽さがよく生かされており,通常の使用に十分耐えるものであるが,EOF行(行末に改行がなく[EOF]がある行)で正常に動作しないという問題がある。この問題に対処し,いくつかの機能を追加した。

追加機能

  1. EOF行で実行しても行を連結せずに所期の動作となる。
  2. 下に複写行を加えて編集を継続できるようにした。シフト起動([SHIFT]キーを押しながらプリフィクス2番目のキーを押す)により,カーソル位置を複写した行に移動する。
  3. [CTRL]キーと同時にプリフィクス2番目のキーを押すことで,カーソルの直前の1文字を複写する。
19 ^KD "DupL\C^te Line Chr [\^]"
        ?.
#if 98
        (ks&16)
#else
        (ks&4)
#endif
        ?{ #s (r)?. (ct-1)?&o(cd) #d . }
        (ct||lh+lx)??.
        k1&ks,
        &s ky[, lx[, h[=lh,
        #k
        #> (ct)?#d ?{ je[-, #m je], }
        #i
        (k)??{ #s #< }
        (h)?{ (h){ #x } }
        h], &x(0]) ky], &d

[ESC]I ファイル挿入

概要

製品版サンプルでもコマンドではなくマクロである「カーソル位置へ挿入」は,ファイル名入力窓で入力待ちになる。手入力でフルパスのファイル名を入力することは現実的でないので,大抵はファイラーを起動することになるだろう。このひと手間を面倒に感じる人は多いのではないだろうか。また,画面分割時に元ファイルと参照ファイルが入れ代わる場合がある。これらの問題に対処し,いくつかの機能を追加した。

8 [ESC]I @I "Insert a File"     ; H_ear
        ?. (mr==$80)?{ &m(36) . }
        (tc-wc)??{ &m(6) . }
#if 98
        (ks&16)
#else
        (ks&4)
#endif
        ?{ &z("insfile") >* }
        k1&ks, c=wc, &m("%s to %s",mg..2..2+5,wa+146)
        (wt)?{ #W b=id, } #R #m
 :a     (s)?{ &c >a } (wc==c)?{ &m("cancel") . }
        &s #_ #> #b #^ #< ek[+,
 :b     #k (mb)?{ #W #< #i #W >b } #C
        (wt)?{ &#T(-b) #W } #i ek], &d
        (k)?{ #E &?("del %s",wf+$92) #m #[ k=px, }?k"",
        &m("ins %4s%s",k,wf+$92)

^KI タブの切替え

概要

製品版サンプルの「タブの切替え」は,トグル動作の見本のような小気味のよいものです。しかし,8タブと4タブ以外を使用するときは,ht(編集ファイルのタブカラム数)を直接インスタントマクロで指定しなければなりません。元に戻すときも同様の操作が必要です。この部分を拡張するものです。きっかけをくれたとしき氏に感謝。

15 ^KI "change Tab ($ht)"
        ?.
#if 98
        (ks&16)
#else
        (ks&4)
#endif
        ?{ ht8, &d . }                  ;初期設定に戻す
        (ks&1-1)                        ;真偽反転
        ?ht=12-ht,                      ;製品版
        ?{ &g("") (r<0||r>64)?. ht=r, } ;入力に応じた桁数を反映
        &d

The VZ resources. ©2002-2003 by mezala. mailto:mezala@nifty.com