番号 | 記号 | 初期キー | 機能 |
---|---|---|---|
#04 | #m | ^M [CR] | [リターン],[Enter],[復改] |
[CR]([Enter])キーに割り当てられたコマンドとして一般的な「改行」コードの挿入を実行する。
戻り値 r: 0=改行挿入,-1=上書きモードにより改行コードを出力しない
VZが挿入する改行コードは 0D0Ah([CR+LF]) でだが,VZは 0Ah([LF])だけの改行にも表面上は対応している。「表面上」という理由は以下の通りである。
「0D0A.def」が便利だろう。
」を使用して一括置換を行う前には,改行コードを 0D0Ah に統一しておかなければならない。改行コード統一には,上村郁夫氏作成の「======== 0d0a.def ======== by I.Kamimura #if 0 【改行コード統一】(Vz Ver 1.5-1.6 共用) ● Mac の「^M」にも対応 #endif * M 89 ^\ "【改行コード統一】" ?. (dz==gz)? jx[-, ; VZ1.6+VWX 対策 zh-, rx-, #56 "\n" #m "\l" #m "AY" ; CR,LF --> LF #56 "\r" #m "\l" #m "AY" ; CR --> LF #56 "\l" #m "\n" #m "AY" ; LF --> CR,LF (dz==gz)? jx], * ======== End of 0D0A.def ========
編集モードでの #04(#m) は,mi(挿入モード)により動作が変化する。
改行コードの入力と次の論理行頭への移動([CR+LF])を行う。Ei(オートインデント)有効,Ej(全角オートインデント)有効により,字下げを行う。
次の表示行頭へ移動し,改行コードの入力は行わない。当然,字下げも行わない。戻り値rには,-1がセットされる。
入力文字列を確定して使用しているバッファに格納する。ただし,文字を何も入力せずに[CR]のみ入力した場合,戻り値rには,-2がセットされる。
非選択時:カーソル位置の1ファイルをオープンする。ディレクトリ名上ではそのディレクトリに入り内容を表示する。<DIR> ..\ 上では親ディレクトリに戻る。
システムメニュー9番(vzfl.defに入っている)「拡張子による自動実行」の設定により関連するコマンドを実行する場合がある。com や exe のように小文字登録の場合,[CR]で即座に実行される。
選択時:選択ファイルをオープンする。
なお,v1.6以降はファイラーの複窓双方から同時にファイルを選択できるようになった。
なお,システムメニュー9番に登録されたバイナリファイルであってもオープンされる。変更を施すとファイルが破壊されて正常な実行ができなくなるので注意が必要である。念のため #67(^KR:リードオンリーモード)などでリードオンリーモードかビューモードに変更してから閉じるとよいだろう。
メニューカーソル上のアイテムを選択する。これはメニューにおけるコマンドキーの例外([UP][DOWN][CR])に当たり,他のコマンドキーがメニューをキャンセルするのに対して,意味のある特定の動作をする。
オプションSy(問い合わせ時のキー入力)を有効(+)にすると,問い合わせに対して応答できるようになり,'y'の入力と解釈される。
オプションYN(問い合わせ時のキー入力の逆転)を有効(+)にすると,yes/noが逆転した応答になり,'n'の入力と解釈される。
^Mの場合はSHIFT/CTRL押下を利用して,変数ksの各ビットの値により分岐を行う手もある。\[CR]と^[CR]はまったく別のキー定義で,初期キーでは\[CR]が#53(#n)や#98に,^[CR]が#97に割り当てられている。したがって[CR]の方でシフトキーを利用して処理を分岐させることはできない。
4 ^M [CR] "Enter"
?. (ks&1)?Je[-, #m ?. Je],
4 ^M [CR] "Enter"
?. Je[+, (ks&20)?Je-, #m Je],
変数Jeは編集スイッチの一括保存・復帰用変数で,Ei(自動インデント)とEj(2バイト空白の自動インデント)の双方を制御することができる。変数Jeの詳細情報は「変数・オプション・スイッチ一覧」のJeの項を参照していただきたい。
次の例は辛口マクロ師である m.gann師のマクロである。
シフトキーを押しながら^Mを押すと行を折る(改行を挿入する)というものだが,プッシュ・ポップの順序などに注目してほしい。
4 ^M [CR] "Enter" ?. (ks&1)?Je[=mi[-, #m #< #s ?. Je], mi],
次の例はYASAT氏のマクロである。
オートインデントを有効にした状態で作られてしまう空白文字だけの空行を,空白文字もないきれいな空行にしてくれるというものだ。非公開オプションのEl(行末のスペース・タブを自動削除)を使用するために,いったんラインバッファに入っているところがキモである。
引用元:NIFTY:FGALDC/MES/13/09817(2004-02-07T22:14:00+09:00)
80 [CR] "" ?. el[+, #28 #m el],
なお,YASAT氏はEiだけでなくEj(全角空白のオートインデント)にも対応するべく,機械語を駆使したマクロも作成している。ちょっと凄すぎるのだが,参考までに引用しておこう。
引用元:NIFTY:FGALDC/MES/13/09817(2004-02-07T22:14:00+09:00)
80 [CR] "" ?. (ct<2)?{ #28 si=wm+230, &i("$(33,C9,AC,3C,0D,74,17,3C,0A,74,13,3C,09,74,F3,3C)$ $(20,74,EF,3C,81,75,05,AC,3C,40,74,E6,FE,C1,C3)") (cx)??#H } #m
さて,オートインデントによる空白文字行を空行にするというマクロの原型は「じょんたま改行」と呼ばれるマクロである。ある意味こだわりの機能で,y.mikome氏のWD.defやEmmett氏+くらと氏のfreeform.defといった整形マクロには装備されているものだ。この「じょんたま改行」を以下に示す。
引用元:NIFTY:FGALPK/MES/03/03559(1993-09-11T23:00:00+09:00)
80 [CR] "" ?.#mlx[,#e(ct<2)?{&s' '#16#?}kx],#x