通常に実行すればコマンド#y
(#47
)と同じ動作になる。
シフトキーを押しながら実行すると,切り取った行やブロックをスタックに積まない。
47 ^Y "Cut[\ux+]"
?. (ks&1)? ux[+, #y ?. ux],
通常に実行すればコマンド#i
(#48
)と同じ動作になり,プット後のカーソル位置は編集スイッチEkに依存する。
シフトキーを押しながら実行すると,プット後のカーソル位置(Ek)を設定と逆にする。
48 ^J "Ins[\Ek!]"
?. (ks&1)? ek!, #i ?. ek!,
通常に実行すればコマンド#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 #]
検索文字列を入力するだけで自動的に検索を実行する。その他の機能もあるが,詳細は文字列検索置換関連の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:^_)('∞':↑↓)
全角括弧にも対応した#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)?>^
}
製品版サンプルでもコマンドではなくマクロである「カーソル行の複写」は,?. #k #i
だけの簡易なものである。VZマクロの手軽さがよく生かされており,通常の使用に十分耐えるものであるが,EOF行(行末に改行がなく[EOF]がある行)で正常に動作しないという問題がある。この問題に対処し,いくつかの機能を追加した。
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
製品版サンプルでもコマンドではなくマクロである「カーソル位置へ挿入」は,ファイル名入力窓で入力待ちになる。手入力でフルパスのファイル名を入力することは現実的でないので,大抵はファイラーを起動することになるだろう。このひと手間を面倒に感じる人は多いのではないだろうか。また,画面分割時に元ファイルと参照ファイルが入れ代わる場合がある。これらの問題に対処し,いくつかの機能を追加した。
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)
製品版サンプルの「タブの切替え」は,トグル動作の見本のような小気味のよいものです。しかし,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