第5章 マクロライブラリ
5-1 KAKKO.DEF 全角ペア括弧変換
【機能】
カーソル位置に全角ペア括弧を書き込みます。連続実行すると、"「」()『』【】《》▲▼"のなかで次々と変換します。
「」→()→『』→【】→《》→▲▼ ↑ │ └──────────────┘ 最後のペアの次は最初のペアに戻る
非ブロックモード
まず、カーソル位置から行末にむかって、括弧を探します。
- ・括弧が見つからなかった場合
- カーソル位置に先頭のペア括弧(初期設定ではカギ括弧)を書き込みます。同時に、ペア文字列がメッセージにでるので、それを参照しながら、目的の括弧になるまで、連続実行して変換してください。
- ・括弧が見つかった場合
- 対応する括弧を探し、ペア括弧を変換します。カーソル位置は変わりません。
実行前
「直前のコマンド実行」で打鍵を減らすとよいでしょう。
実行後
(直前のコマンド実行)で打鍵を減らすとよいでしょう。
※反転しているのがカーソル位置
文字境界のブロックモード
ブロックの両端にペア括弧を書き込みます。その直後には、 まだブロックの範囲が潜在しているので、^QB「ブロックの先頭/最後」で移動できます。
実行前
文字境界のブロックモードで範囲指定
実行後
「文字境界のブロックモード」で範囲指定
シフト実行
実行キーをシフトキーといっしょに押すと、ペア括弧変換をおこなわず、単純にカーソル位置に先頭のペア括弧を書き込みます。
実行前
「直前のコマンド実行」で打鍵を減らすとよいでしょう。
シフト実行後
「直前のコマンド実行「」」で打鍵を減らすとよいでしょう。
括弧の内側に、さらに括弧を挿入したいときに使ってください。
多重括弧もちゃんと変換します。
実行前
『直前のコマンド番号(cm)』
実行後
【直前のコマンド番号(cm)】
連続実行を簡単に
連続実行するとき、マクロ実行キーを何度も押すのは面倒なので、[Ctrl]+'['「直前のコマンド実行」で打鍵を減らすとよいでしょう。
環境設定
kk="「」()『』【】《》▲▼", ;★ペア文字列(全角のみ・32組まで)
この部分に、ペア括弧を定義します。いちばんよく使う括弧を先頭にしてください。
5-2 KANA.DEF VZでかな/カナ変換
【機能】
「ひらがな」と「カタカナ」を変換します。
ロボット■ ←→ ろぼっと■
非ブロックモード
- カーソル位置以降を変換します。
- カーソル位置に、ひらがな・カタカナがない場合は、すぐ左側の語を変換します。
- シフトキーを押しながら実行すると、旧カナ遣い(濁点・半濁点をなくす)に変換します。
- 文字入力窓やコマンドラインでも有効です。
ブロックモード
最初に、次のメニューがあらわれます。
┌────────┐ │H かな => カナ │ │K カナ => かな │ │Q かな => 旧カナ│ │R かナ <> カな │ └────────┘
- 行境界または文字境界のブロックモードだと、その範囲を変換します。
- 矩形ブロックモードでは、左上から右下にむかって範囲指定することを前提としています。
- 「R かナ <> カな」では、ブロック内の「かな」と「カナ」を逆転させます。ロボット語(?)の作成にお役立てください。
変換前
蜃気楼の国の 国花は サボテンですか?
ロボット語変換
蜃気楼ノ国ノ 国花ハ さぼてんデスカ?
- ブロックモードの場合には、置換処理をおこなっていますが、範囲が256バイト未満の場合、または「R かナ <> カな」の場合には、1文字ずつ変換します。
- メニューを介さずに、マクロキーで直接実行することもできます。(詳しくは付録ディスク内のドキュメント)
5-3 CAPS.DEF 英大/小文字変換(拡張)
【機能】
VZの英大/小文字変換を全角文字でも有効にしました。
ブロック範囲内の一括変換もできます。
【解説】
非ブロックモード
- カーソル位置の英大/小文字を相互に変換します。
- カーソル位置に英大/小文字がない場合は、すぐ左側の英大/小文字を変換します。(後戻り変換)
シフト実行による頭文字変換
実行キーをシフトといっしょに押すと、先頭の1字のみ大文字にします。
ブロックモード
次のようなメニューがあらわれます。
┌─ caps ─┐ │1. a => A │ 半角小文字→半角大文字 │2. A => a │ 半角大文字→半角小文字 │3. a=>A │ 全角小文字→全角大文字 │4. A=>a │ 全角大文字→全角小文字 └─────┘
autoexec.bat の英大/小文字を統一したいときなど便利です。
※ 矩形ブロックでは左上から右下にむかって範囲指定してください。
5-4 EXZENHAN.DEF VZで全角/半角変換(拡張)
【機能】
VZに標準添付されている「全角/半角変換」マクロの機能を拡張しました。
- ブロックモードで一括変換できます。
- 「ヴ」と「ウ゛」を双方向に変換できます。
- 「ヮヰヵヶ」を「ワイカケ」に変換できます。
【解説】
非ブロックモード
- カーソル位置の1語を変換します。
- カーソル位置に変換対象文字がない場合、すぐ左の1語を変換します。
- 全角/半角の対応文字がない場合は、何も起こりません。
ブロックモード
次のようなメニューがあらわれます。
┌ 全角/半角 ┐ │H 半角→全角│ │Z 全角→半角│ └──────┘
※ 矩形ブロックモードには対応していません。
メニューを介さずに実行
ブロック範囲内の変換を、メニューを介さずに直接実行することもできます。(詳しくは付録ディスクのドキュメント)
付録FD: EXZENHAN.DEF EXZENHAN.DOC
5-5 QKANJI.DEF 旧漢字/異体字変換
【機能】
- 通常の漢字と旧漢字/異体字とを相互に変換します。
- 文字入力窓やコマンドライン、ブロックモードでも有効です。
【解説】
非ブロックモード
カーソル位置の1字を変換します。
「窓」←→「窗」
変換テーブルにない場合は、何も起こりません。
ブロックモード
次のようなメニューがあらわれます。
┌─ QKANJI ───┐ │K 漢字 => 旧漢字│ │Q 旧漢字 => 漢字│ └────────┘
矩形ブロックでは左上から右下にむかって範囲指定することを想定しています。
シフト実行
通常は、ブロックの範囲内を1字ずつ変換していますが、シフトキーを押しながら、[K]あるいは[Q]を押すと、変換テーブルの文字数ぶんだけ、一括置換を繰り返します。ブロックが大きい場合には、こちらが速いでしょう。
起動時シフト実行
マクロ実行キーをシフトキーといっしょに押すと、矩形ブロックモードに入ります。「範囲指定して[ESC]」を押すと、メニューがあらわれます。
メニューを介さずに実行
ブロック範囲内の変換を、メニューを介さずに直接実行することもできます。(詳しくは付録ディスクのドキュメント)
変換テーブルの改造
マクロファイルを直接書き換えても結構ですが、変更が多い場合には、同梱のQKANJI.TXTを書き換えて、MKTBL.DEFを実行することによって、変換テーブルを新たに作成することができます。(詳しくは付録ディスクのドキュメント)
付録FD: QKANJI.DEF QKANJI.DOC MKTBL.DEF QKANJI.TXT
5-6 KEICVT.DEF 罫線コード変換(疑似罫線対応)
【機能】
最初に次のようなメニューがでます。
┌─【罫変換】─┐ │JIS -> NEC │ │NEC -> JIS │ │ZENKAKU GIJI │ │HANKAKU GIJI │ └───────┘
- JIS罫線とNEC罫線を相互に変換します
- 罫線を疑似罫線に変換できます(全角と半角を選択可能)
- 疑似罫線を罫線に変換することはできません。
- ブロックで範囲指定できます。
【通常の罫線】 【ZENKAKU GIJI】 【HANKAKU GIJI】 ┌──────┐ +――――――+ +-------------+ │JIS罫線 │ |JIS罫線 | |JIS罫線 | ├──────┤ +――――――+ +-------------+ │NEC罫線 │ |NEC罫線 | |NEC罫線 | ├──────┤ → +――――――+ +-------------+ │全角疑似罫線│ |全角疑似罫線| |全角疑似罫線 | ├──────┤ +――――――+ +-------------+ │半角疑似罫線│ |半角疑似罫線| |半角疑似罫線 | └──────┘ +――――――+ +-------------+
付録FD: KEICVT.DEF KEICVT.DOC
5-7 BUSTER.DEF 文字化け退治
【機能】
パソコン通信でダウンロードした文書などの文字化けを退治します。
【解説】
標的にカーソルをおいて起動すると、【複写文字列】の窓に幽霊の姿が映し出されます。[<--][-->]キーで照準を合わせて、リターンで撃つと、憑依していた幽霊が逃げ出して、文字列は正常な姿に戻ります。
vフ下の幽霊 ┌─ 【複写文字列】 ───────┐ │柳の下の幽霊 │ └────────────────┘
残念ながら、魂を抜かれた犠牲者を救うことはできません。
また、この退治機を乱暴に扱って作動しなくなったときには、素早くエスケープしてください。
付録FD: BUSTER.DEF
5-8 OR.DEF OR検索
【機能】
9個までの文字列を同時にOR検索できます。
【解説】
VZはver 1.57現在、正規表現による検索をサポートしていません。子プロセスで grep のような外部プログラムを起動して、検索結果をconsole に取得し、そこからタグジャンプをするのが普通です。このように専用のツールを使うのは、大量のファイルを検索するときには大変便利なのですが、現在オープンしているファイル内でちょっと検索したいときには重たく感じられます。そこで、複数の文字列を同時検索(OR検索)するマクロを作ってみました。
- 文字入力窓があらわれるので検索文字列を入力してリターンを押してください。
- 繰り返し文字入力窓があらわれます。
- [ESC]でキャンセルすると、メニュー「Back」「Forward」があらわれるので、検索方向を選択してください。
┌ OR:3 ─┐ │Back │ ※「3」は検索文字列の個数です │Forward │ └────┘
- リターンのみ入打すると、ファイラーが起動し、VZ.DEFと同じディレクトリにある拡張子「.OR」のファイルを一覧表示します。選択すると、そのファイルに登録されている検索文字列を読み込みます。以下のように、1行に1つの検索文字列を書いておいてください。
--------( LOADER.OR )------------------- ExMac moremac VzOutlaw ----------------------------------------
- いちばん近い位置で発見した文字列にカーソルが移動します。再度メニューがあらわれるので、繰り返し検索できます。
- シフトキーといっしょにマクロ実行キーを押して起動すると、すぐにメニューがあらわれて、前回の検索を繰り返すことができます。ただし、検索文字列ヒストリーの内容が変わっていた場合には、その内容で検索されてしまいます。
- ワードサーチや英大/小文字の同一視は、使用者の設定がそのまま有効になります。
付録FD: OR.DEF
5-9 QUOTE.DEF 引用符挿入
【機能】
行頭に引用符を挿入したり、削除したりします。
【解説】
パソコン通信の発言で、ログを引用するときなどには、通信関連プログラム の誤動作を防ぐ意味もあって、行頭に特定の記号を付加する習慣があります。 このマクロで、引用符の挿入・削除を手軽におこなうことができます。処理結 果が気に入らなければ、ワンタッチでアンドゥができます。アンドゥのアンド ゥもできます。
たとえば、上の文章を処理すると、
》 パソコン通信の発言で、ログを引用するときなどには、通信関連プログラム 》 の誤動作を防ぐ意味もあって、行頭に特定の記号を付加する習慣があります。 》 このマクロで、引用符の挿入・削除を手軽におこなうことができます。処理結 》 果が気に入らなければ、ワンタッチでアンドゥができます。アンドゥのアンド 》 ゥもできます。
となります。
引用符挿入
行境界のブロックモードで範囲指定して実行すると、「Insert default か?(Y/N)」と問い合わせます。'Y'で二重山括弧「》」、'N'でセミコロン「;」を行頭に挿入します。[Esc]で「QUOTE」という入力窓があらわれて、ほかの記号に変更することができます。
引用符削除
シフトを押しながら実行すると、「Delete default か? (Y/N)」と問い合わせます。'Y''N'[Esc] いずれの場合も、文字列の長さのみ参照して、行頭の文字列を削除します。 たとえば、 一重山括弧「〉」 を削除するときには、わざわざ「QUOTE」の入力窓で設定しなくても、'Y'と答えればよいわけです。ただし、次に述べる「アンドゥ」では、二重山括弧「》」が挿入されてしまいます。
アンドゥ(やり直し)
引用符を挿入/削除した直後には次のようなメッセージがでます。
[SPC],[BS]:Undo \[SPC],\[BS]:ReBlock [INS]:More
挿入・削除の結果が気に入らなかったら、実行直後のみスペースキーかバックスペースキーでアンドゥできます。アンドゥのアンドゥもできます。
シフトキーをいっしょに押すと、ブロックの範囲を再現して、逆の問い合わせをします。
削除直後 → 「Insert default か? (Y/N)」 挿入直後 → 「Delete default か? (Y/N)」
[INS] キーを押すと、ブロックの範囲を再現して、同じ問い合わせを繰り返します。
分割画面に複写
画面分割している場合には、ブロックを反対画面に複写して、引用符の挿入・削除をおこないます。
環境設定
引用符を設定するには、次の部分を書き換えてください。
2文字以上を設定することもできます。
(r)? c="》", ? c=";", ;★ Y/N…初期設定/裏設定
5-10 TAGSET.DEF タグジャンプ強化
【機能】
VZの「タグ情報の取得」(#60
)には若干の制限があります。
【解説】
ver 1.57 から、「#」「~」のまじったファイル名も認識するようになりましたが、まだ「@」は駄目のようです。
また、ディスクに存在しないファイル名は取得しなくなったため、動作しなくなったマクロもあるようです。tagset.def はその制限を緩和して、ワイルドカードまで使えるようにします。
たとえば [ a:\ ] というタグ情報から、Aドライブを対象にファイラーを起動することができます。
ファイルに文書名をつけて、階層管理。
VZのファイラーは強力ですが、MS-DOSのファイル名の制限についてはいかんともしがたいものがあります。tagset.defは、ファイルに別途に「文書名」をつけておき、一覧表示の中から選択できるようにします。英字を数タッチ押すだけで、特定のファイルの特定の箇所をすばやく呼び出すことができます。
次の4つのマクロがセットなっています。
50 \[F10] "Tag Jump"
51 ^KG "Get Tag"
52 [ESC]T "Tag List"
53 [ESC]F "Filing"
「50 \[F10] "Tag Jump"」 拡張・タグジャンプ
VZに標準添付の「タグジャンプ」と同様に、カーソル行のタグ情報をもとにファイルをオープンします。タグ情報がない場合、「No Tag」とメッセージをだして終了します。
タグ情報の書式
c:\vz\tagset3.doc -1 VZ標準形式。行番号は省略可 c:\vz\tagset3.doc 2 '-'は省略可 c:vz\tagset3.doc -3 最初の'\'は省略可 c:\vz\tagset3.doc(4) 行番号の前置記号が'(' c:\vz\tagset3.doc:5 行番号の前置記号が':' c:\vz\*.def ワイルドカードでファイラーを起動する autoexec.bat -6 主ファイル名のみ
- ファイル名の前後は、タブかスペースか改行で区切られていなくてはなりません。
- grep等のタグ形式に対応するために、行番号の前置記号として、'('を設定していますので、 ファイル名に'('を使うと取得できません。
- その他の前置記号に対応させるには、マクロ中の2箇所に追記してください。 ただし、'*'の位置を変更してはいけません。
&f(cd,"(:") (r<0 && ct>2)? >D ;◆前置記号またはスペースまで前進
&f(cd,"*-(:") (r<0)?. ;◆前置記号か?
検索型タグ情報
tagset.def独自のタグジャンプ機能です。
TAGSET3.DOC *9 タグ
上のような形式のタグ情報があると、ファイルをオープンしたのち、「タグ」という文字列を9回検索します。行番号でジャンプする場合とはちがって、ファイルの内容に多少増減があっても、目的の位置へジャンプすることができます。特徴のある見出しなどを書いておくとよいでしょう。
書式は、'*'の直後に検索回数。任意個のスペース・タブで区切って、行末までが検索文字列となります。
与えられた回数未満で検索が終了した場合、「NO MORE:<検索文字列>」とメッセージがでます。
この検索型タグ情報を手作業でつくるのは大変です。そこで、次のようにワンタッチで作成するマクロも用意しました。
「51 ^KG "Get Tag"」 拡張・タグ情報の取得
このマクロでは、カーソル行のタグ情報を取得すると同時に、編集中ファイル自身のタグ情報を【検索文字列】に取得します。^QI, \[F05]で「文字列の複写」ができるので、タグ情報を集めたファイルを作成するのに便利です。
行番号型タグ情報の取得
たとえば、TAGSET.DOCというファイルの適当な行で実行すると、
C:\VZ\TAGSET.DOC -68
という具合にメッセージにでます。
検索型タグ情報の取得
あらかじめ文字境界のブロッモードで範囲指定してから実行すると、その文字列がファイルの先頭から何回目にあらわれるかカウントして、検索型タグ情報を取得します。
C:\VZ\TAGSET3.DOC *22 タグ
という具合にメッセージにでます。
「52 [ESC]T "Tag List"」 ファイルを文書名で階層管理
タグ情報を階層管理して、自在にタグジャンプするマクロです。ファイルにいわゆる「文書名」をつけることもできます。
VZ.DEFと同じディレクトリにある「TAGLIST.###」というデータファイルを参照します。データの書式は次のとおりです。
==========================( TAGLIST.### )=============================== 120 ←画面幅指定 A Aドライブ a:\*.* ~~~~~~~~~~~(中略)~~~~~~~~~~~~~~~~~~~~ P K 0 1 C:\LOG\PK01*.* 2 C:\LOG\PK02*.* 3 C:\LOG\PK03*.* ~~~~~~~~~~~(中略)~~~~~~~~~~~~~~~~~~~~ V VZ関連 D VZ.DEFのマクロ c:\vz\vz.def *1 * M マクロ O c:\vz\out*.* 7 c:\vz\vz157.doc -1 W X Y Z =======================( END OF TAGLIST.### )===========================
書式の意味
D VZ.DEFのマクロ c:\vz\vz.def *1 * M マクロ ~~~%1~~ %2 ~~~~~~~~~%3~~~~~~~~~ ~~~~~~%4~~~~ %5 ~~~~%6~~~~
- %1 階層分のタブ(第1階層はタブなし)
- %2 見出し文字 英数字 [A-Z][0-9] のみ
- %3 自由欄
- %4 ファイル名
- %5 行番号 or 検索回数
- %6 検索文字列
ファイルの選択方法
マクロを実行すると、TAGLIST.###がオープンして、次のようなメッセージがでます。
<<< TAGLIST MODE >>> [A-Z][0-9] or [CR]:Jump [BS]:Back \[Esc]:Edit [Esc]:Quit
- カーソルを移動してリターンを押すと、カーソル行のタグ情報を取得してタグジャンプします。
- それぞれの項目の先頭にある半角英字[A-Z]を入力して、ショートカット選択することもできます。
- 選択した項目にタグ情報がなければ、親見出しとみなして、カーソルがそこに移動するだけです。そこから再び[A-Z]を入力して、次々と下の階層に移ることができます。バックスペースを打つと、1階層だけ戻ることができます。
- マクロ中でFEPをOFFにするために、ver 1.57から機能追加された
&j(0)
や&j(-1)
を使っています。古いバージョンをお使いの方は、削除しておいてください。
キー操作の例
「A」 | 「a:\*.*」でファイラー起動 |
「V」「D」 | 「D c:\vz\vz.def」をオープンし、「* M マクロ」を1回検索 |
「P」「K」「0」「3」 | 「c:\log\pk03.*」でファイラーを起動 |
このように、一定のキー操作で確実に目的のファイルを呼び出すことができます。
階層は無制限
何階層でも可能ですが、実用的には3階層ぐらいが限度でしょう。
画面幅をひろげる
階層が深くなると、画面右端で折り返して見通しが悪くなりますので、ファイルの先頭に81以上、255以下の数字を書いておいてください。その数値どおりに画面幅をひろげます。数字を書かない場合も、ファイルの先頭には最低1行あけておいてください。さもないと、最初の「A」を検索できません。
自由欄に文書名を書く
見出し記号[A-Z][1-9]の後ろ側には、タグ情報のほかに自由に文字を書いてかまいません。ただし、「outlaw.def」のような文字列があると、それをパス抜きファイル名とみなしてしまうので、ご注意ください。
^KG を利用して TAGLIST.### を作成する
- 登録したいファイルを編集画面に呼び出す。
- [ESC]T(Tag List)を実行して、TAGLIST.###を呼び出す。
- <<< TAGLIST MODE >>>を[Esc]で中断して、適当な位置に見出し記号など書く。
- 登録したいファイルに戻って、「51 ^KG "Get Tag"」でタグ情報を取得する。
- TAGLIST.###に^QI, \[F05]で転写する。
階層をあらわす字下げには必ずタブを使ってください。これらのマクロは階層分のタブと英字を検索して、目的の見出し・項目へ移動します。単純に前方を検索しているだけですので、存在しない英字を押すとビープ音で警告するか、別の系統の見出しへ飛んでしまいます。
同じレベルの見出しを一覧するには
ひとつの親見出しに沢山の子見出しを作ると、その系統だけしか見えないので、全体の選択枝を見渡すことができません。親見出し[A]のわきに、[B-Z]の見出しを複写しておけば改善されるでしょう。見出し英字の前に「;」のような別の文字を付加しておけば、見出しとは見なされません。
「53 [ESC]F "Filing"」 TAGLIST.### の登録内容を書き換える
TAGLIST.###に登録した行番号や検索文字列を自動的に書き換えます。
マクロを実行すると、TAGLIST.###をオープンし、編集中ファイル名を検索し、同時に次のメニューがあらわれます。
┌ Filing ┐ │Backword│後方を再検索 │Forward │前方を再検索 │Replace │登録内容を書き換える │Edit │マクロを中断し、TAGLIST.### を編集する └────┘
カーソル位置にある登録内容を確認のうえ、「Replace」を選択して書き換えてください。TAGLIST.###に同じファイルを複数登録してある場合は、「Backword」「Forward」で再検索できます。
付録FD: TAGSET3.DEF TAGSET3.DOC TAGLIST.###
5-11 JITEN.DEF テキスト型データベース
【機能】
テキスト型の多機能データベース(英和・和英辞書、ハイパーテキスト)を構築するマクロです。英和・和英辞書データ DIC.TXT を検索することを前提としていますが、自分でゼロから DIC.TXT を構築することもできます。
データファイルは初期設定では、vz.def と同じディレクトリにおきます。
【解説】
データの形式は、次のようになります。
@見出し語 補足説明
- 行頭に「@」。任意個のタブで区切られた左項と右項からなります。
- 左項、右項とも、スペースが混入してもかまいません。
単語の上(たとえば「dictionary」)でマクロを実行すると、辞書データ「DIC.TXT」を検索して、登録済みの単語であれば、横分割した上画面(1行)に該当行をだします。
@dictionary 辞書
- 1字のみの語は単語とみなさず、次の語へ移動します。
- カーソルが文字上にない場合は、<<< encyclopedia >>>モードに移行します。
画面上の単語は反転して、画面の2行目に移動しています。
単語の範囲は自動的に認識します。思い通りの範囲を指定したいときには、文字境界のブロックモードで範囲指定しておいてください。
同時に、以下のようなメニューがひらいています。
┌ encyclopedia ┐ │H 単語補完 │ │I 説明挿入 │ │J 前の候補 │ │K 次の候補 │ │L 次 語 │ │C 単語変換 │ │R 重複登録 │ │O 上書登録 │ │E 辞典編集 │ │T ジャンプ │ │F 先頭移動 │ │Q 終 了 │ └───────┘
[ESC]で、後述の <<< encyclopedia >>> モードへ移ります。
「J 前候補」「K 次候補」で、辞書データ内を検索できます。
ワードサーチモードをON(ew+,
)にして検索していますので、部分一致で検索したいときには、「J 前の候補」「K 次の候補」の英字「J」「K」を[SHIFT]といっしょに押してください。
「I 説明挿入」
画面上の単語の後ろに意味を書き込みます。
dictionary[辞書]
「pro*」のように語尾にワイルドカードを指定した場合も、次々と候補がでます。
「I 説明挿入」
語尾を補完して、訳語を書き込みます。
「H 単語補完」
語尾の補完のみをおこないます。ワイルドカードを指定していない場合は、「H 単語補完」は無効です。
「C 単語変換」
FEPのように変換します。スペースで次々と変換できます。
@authority 権限;権威
と登録してあると、「authority」→「権限」→「権威」→「authority」と循環して変換することが出来ます。右項の候補は、任意の記号で区切ってください。
「N 次 語」
次の単語へ移動して、同じ動作を繰り返します。スペース・タブ・改行・記号はスキップします。
「R 重複登録」
別の補足説明をつけて登録することができます。
「R 重複登録」
別の補足説明をつけて登録することができます。
「E 辞典編集」
マクロを中断して、DIC.TXT を編集することができます。カーソルは表示中だった位置にあります。
「T ジャンプ」
上画面(DIC.TXT)にタグ情報(ファイル名、行番号など)がある場合には、タグジャンプします。たとえば画面上の「NBD00533」という語から、
NBD00533 上村 郁夫 A:\NBD00533.NIF -1
のようなデータを表示させて、「T ジャンプ」で「A:\NBD00533.NIF」の第1行目にタグジャンプすることができます。
後述する「検索型」で登録されている場合には、ファイルをオープン後、指定回数だけ<単語>を検索します。検索型で登録しておけば、ファイルの内容に多少増減があっても、目的の位置へ正しくジャンプできます。
「F 先頭移動」
上画面に分割表示している行をDIC.TXTの先頭へ移動します。そうしておくと、次回の起動時に最初の候補になります。
登録動作への移行
カーソル位置の単語が未登録の場合には、登録動作へ移ります。
┌─□ Regist [Esc]:Cancel [CR]:Quit [*]:Search □ ─┐ │ │ └───────────────────────────┘
この入力窓に、単語の意味や補足説明を記入してください。
リターンのみを押すと、マクロを終了します。[ESC]を押すと、<<< encyclopedia >>> モードに移ります。タグ情報を登録しておき、「T ジャンプ」で利用することもできます。
行番号型タグ情報
入力窓といっしょに、タグ情報(ファイル名 -行番号)がメッセージに出ます。[↑]を押して入力窓に呼び出すことができます。補足説明を書き足すなどして、リターンを押すと、次のような形式で登録します。
@<見出し語> <自由欄> <ファイル名> <-行番号> <自由欄>
検索型タグ情報
入力した語の最後に「*」を付加すると、画面上のブロック指定された単語がファイルの先頭から何回目にあらわれるかをカウントして、次のような形式で登録します。
@<見出し語> <自由欄> <ファイル名> *N <単語>
※ N = 回数
<見出し語>は、「*」より左側に入力した文字列になります。「*」のみ入力した場合は、<見出し語>と<単語>とは同じになります。
ちょっと紛らわしいのですが、「行番号型」と「検索型」とでは、見出し語と補足説明の登録手順が逆になるわけです。「行番号型」では、画面の語が<見出し語>になり、「検索型」では入力した語が<見出し語>になります。
いずれの場合も、DIC.TXT の先頭に書き込まれた様子が表示されて、
「This Position ? (Y/N)」(この配置でよろしいですか)
と問い合わせます。
'N'と答えると、左項と右項の位置が逆になります。
[ESC]で中断して、登録内容を書き換えたりできます。
検索型タグ情報で「*N」の右側から行末までが検索語になるという以外には、特に書式の制限はありません。同一行内に自由に補足説明を書くことができます。
無条件にDIC.TXTの先頭へ登録していきますので、ときどきソートして整理したほうがよいでしょう。
<<< encyclopedia >>> [Esc]:reference
メニューや入力窓で[ESC]を押すと、<<< encyclopedia >>>モードになります。通常のたいていの編集コマンドを使うことができます。意味を調べたい単語のうえで[ESC]を押すと、検索します。カーソルが文字上にない場合は、次の語へ自動的に移動します。
このモードから直接マクロを終了することはできません。[ESC]を押して、メニューが出たら「Q 終了」を選択する。未登録で入力窓がひらいたらリターンのみを入力する、といった手順を踏む必要があります。これは連続して単語を調べやすくするための措置です。
テキスト上にない語を検索するには
^QF,[F06]「検索文字列の設定」で検索語を入力してリターンを押す(通常の操作と同じ)と、その語をDIC.TXTで検索します。あるいは、検索したい語をブロックモードで入力して、[ESC]を押してもよいでしょう。
英文を書くときには、まずブロックモードで和語を入力したあとに、マクロを実行して、訳語を表示、「C 変換」するとよいでしょう。
英単語だけでなく、和語も検索する
カーソル位置と同じ文字タイプを前後に探して、自動的に対象語をブロック反転します。和語はワイルドカードに対応していません。また、ワードサーチは働かないので、たとえば「語」という1字で検索すると、「language」「term」「word」など類義語を調べることができます。
付録FD: JITEN4.DEF JITEN4.DOC RETAG4.DEF JITEN.TXT JITEN5.DEF JITEN5.DOC
5-12 AIFEP.DEF 疑似FEP(定型句)
【機能】
- 英数字2ストロークで定型句をテキストに挿入できます。
- 確定キーが必要ない、いわゆる無連想2ストローク変換です。
- 文字列のみならず、複数行を登録することもできます。
【解説】
マクロを実行すると、次のようなモードメッセージがあらわれます。
◆◆◆ [0. aifep.###]: ◆◆◆
英数字を2つ打鍵すると、aifep.###の登録内容にしたがって、カーソル位置に文字列を書き込みます。
1打目はメッセージに表示されます。打ちまちがえた場合は、バックスペースで訂正することができます。
辞書データの形式
行頭に【読み】、タブで区切って、【登録内容】を書きます。
eb バックアップファイルの作成 bm マクロバッファのフリーエリア ec 英大/小文字の同一視 $ ik $ ┌────────────┐ │ 上村 郁夫 │ │ (NIFTY-Serve:NBD00533) │ └────────────┘ $ しお 蜃気楼の王 ap11 $ - 廢墟の散歩者 - $
- 複数行を登録する場合は、「ik」の場合のように、タブで区切って、「$」のみ書きます。次の行から、行頭に「$」があらわれるまでを1登録とみなします。
- 「しお」の例のように、【読み】をひらがな・漢字にすることもできます。1字ずつ確定する必要はなく、「しお」と連続して入力して、リターンを押してください。
モード中、[ESC]を押すと、次のメニューがあらわれます。
┌ AIFEP ─┐ │ Free │ │ Dic.### │ │ Katakana │ │ Register │ │ Close │ │ Save │ │ Out_Mac │ │ Edit Dic │ │ Quit │ └─────┘
AIFEPメニュー
通常モード
メニューをキャンセルすると、モードメッセージの「◆」または「■」が、「◇」または「□」に変わり、通常どおりテキストに入力することができます。再び疑似FEPモードにするには、[Esc]を2度押してください。
Free「フリーストローク」
3打鍵以上【読み】で変換したい場合に使います。
┌ Free Stroke ┐ │ │ └───────┘
この入力窓に【読み】を入力して、リターンキーを押してください。
Dic.###「辞書切り替え」
次のメニューがあらわれます。数字で選択してください。
(メニューの項目名は、適当に書き加えてください)
┌ Dic ────┐ │ 0 │ │ 1 │ │ 2 │ │ 3 │ │ 4 │ │ 5 │ │ 6 │ │ 7 │ │ 8 │ │ 9 │ └───────┘
これは、マクロ中の次の部分に対応しています。
2: ;--- Dic. List --- (p)>? { { pp="aifep.###",. } ; 0 { pp="aifep1.###",. } ; 1 { pp="aifep2.###",. } ; 2 { pp="aifep3.###",. } ; 3 { pp="aifep4.###",. } ; 4 { pp="aifep5.###",. } ; 5 { pp="aifep6.###",. } ; 6 { pp="aifep7.###",. } ; 7 { pp="aifep8.###",. } ; 8 { pp="aifep9.###",. } ; 9 }
なお、辞書は vz.def と同じディレクトリに作成されます。
Katakana「カタカナ有効」
カタカナを【読み】にしている場合には、これを選択してください。
モードメッセージの「◆」または「◇」が、「■」に変わります。
「◆」の状態では、半角カタカナが入力されると、対応する英字に翻訳して、変換しています。
Register「登録」
文字境界または行境界のブロックモードで選択してください。
┌─ Key Word ─┐ │ │ └───────┘
この入力窓に【読み】を入力すると、ブロックの内容が辞書データに登録されます。
Close「ファイルのクローズ」
Save「ファイルのセーブ」
このふたつは、VZの基本機能そのままです。
疑似FEPで作成した文書を、モードを抜けることなくセーブできます。
Out_Mac「外部マクロ連携」
拙作の外部マクロローダー outlaw.def との連携を想定しています。
モードを抜けると同時に、ほかの外部マクロに制御を移すことができます。
よく使うマクロを次の箇所に記述しておくとよいでしょう。
:O &11 dd="outside", nn=0, >88 ; outlaw.def へ
Edit Dic「辞書編集」
モードを抜けて、辞書データをオープンします。
Quit「終了」
モードを終了します。
5-13 THEATER.DEF プロファイル自由自在
【機能】
VZの「プロファイル機能」を拡張し、テーマ別のファイル群をワンタッチで切り替えることができます。
【解説】
VZは「プロファイル機能」によって、関連のあるファイル群をいっぺんにオープンすることができます。しかし、予約データファイル(標準設定ではeditfile)はたえず更新されるため、いくつものファイル群を切り替えて使うことはできません。
実を言うと、「ピックファイル」と呼ばれる予約データを作っておき、コマンドラインや【入力ファイル】の窓で、その予約データ名を'@'付きで指定すれば切り替えることができるのですが、予約データを作るのも、それを指定するのも手作業が多くなるので、この機能を使いこなしている人は意外と少ないのではないでしょうか。
「プロファイル機能」をしゃぶりつくす3つのマクロを紹介いたします。
「81 [ESC]W "Cast"」(配役)
現在編集中の全テキストのファイル名と行番号を一括保存します。
┌- cast [?] -┐ │ │ └──────┘
- [?]には編集中のテキスト数が表示されます。
- もちろん ^E,[UP] でヒストリ機能を使うこともできます。
この入力窓があらわれたら、8バイト以内のタイトル(主ファイル名)を入力してください。環境設定でさだめたディレクトリに、「.pik」という拡張子で保存します。
既存のピックファイル名で保存したいときには、リターンのみ入力してください。ファイラーが起動して、ピックファイルの一覧がでます。選択したピックファイル名にて更新・保存されます。古い内容はすべて消えます。
現在の表テキストと裏テキストの情報がいちばん最後に保存されます。
シフト機能
マクロ実行キーの最後のストロークをシフトキーといっしょに押すと、オープン済みのテキストを1つずつ選択してタグ情報を保存できます。ピックファイル名を指定したあと、【編集テキスト】のメニューがあらわれるので、リターンキーまたはテキスト番号で選択してください。実行時のテキストは即座に保存されます。繰り返しメニューがあらわれます。終了したいときには[ESC]を押してください。
既存のピックファイルを指定した場合は、古い内容はそのままで、ひとつずつ追加していきます。すでに登録されていた場合は、行番号を更新して、ピックファイルの最後に移動します。
・「cast」の入力窓で、ビープ音が鳴り、[?]には[1]と表示されます。
「82 ^KV "Stage"」(上演) ※ コマンドラインでも有効です。
- 最初に、すでにオープンしているファイルを全てクローズします。修正テキストがあれば、出力するかどうか問い合わせます。
- ファイラーが起動して、ピックファイルの一覧がでます。選択したピックファイルの内容にしたがってファイルをオープンします。
- 編集可能なテキスト数をオーバーした場合は、「オープンできません」とメッセージをだして中断します。(VZの基本仕様のまま)
- 全ファイルをクローズしたあと、思い直して、元に戻したくなったときには、【入力ファイル】の窓で「@」を入打してください。
念のために、VZの基本機能である「プロファイル情報のセーブ」も同時におこなっています。カレントディレクトリに editfile というファイルを作成しておいてください)
シフト機能
マクロ実行キーの最後のストロークをシフトキーといっしょに押すと、オープン済みのテキストはそのままで、前述の処理をおこないます。
「83 ^K\ "Direct"」(演出) ※ コマンドラインでも有効です。
ファイラーが起動して、ピックファイルの一覧がでます。選択したピックファイルをオープンして、次のメッセージがあらわれます。
[CR]:Open [SPC]:Serially Open [Esc]:Quit \[Esc]:Stop
- リターンで、カーソル行のタグ情報をもとにファイルをオープンします。ピックファイルはクローズします。
- スペースだと、ファイルオープン後、ピックファイルに戻り、繰り返し実行できます。
- [ESC]で、ピックファイルをクローズして終了します。
- [SHIFT]+[ESC]で、ピックファイルをオープンしたまま終了します。
このモードにいるあいだ、他の操作キーも有効なので、不要な情報を削除するといったメンテナンスもできます。
これら3つのグローバルマクロは、最初にある「89 ^\ "theater"」のメニューから使うこともできます。シフト実行も有効です。
VZ起動時にピックファイルを選択するには
次のようなバッチでVZ起動と同時にマクロを実行することができます。
vz -r82 console
- 「82」は「82 ^KV "Stage"」のマクロ番号です。
- consoleはVZが常時保持している補助ファイルのようなものです。
「82 ^KV "Stage"」(上演)と「83 ^K\ "Direct"」(演出)はコマンドラインでも有効なので、VZ常時など、マクロキーで一発起動できます。
環境設定
プロファイル情報の作業用ファイル名
初期設定は「theater.tmp」になっています。拡張子が「.pik」のファイルをこのファイル名にリネームして、VZの基本機能である「プロファイル機能」を利用しています。
pickfile を格納するディレクトリ
初期設定では、VZ.DEFのあるディレクトリのサブディレクトリ「PICK\」になっています。あらかじめディレクトリを作成しておいてください。
付録FD: THEATER3.DEF THEATER3.DOC
5-14 EXKB.DEF 究極の矩形ブロック
【機能】
このマクロはあなたのVZを「矩形ブロック正式対応VZ」に変身させます。
【解説】
「究極」などと大見得を切ったのは、「もしVZが矩形ブロックに正式に対応したら、こんな仕組みになるのではないか」と思われる手法を採用しており、テキストスタックが許すかぎり多重記憶が可能だからです。
もちろん、通常の行・ブロックと混在していてもかまいません。
その他、次のような機能を追加しました。
「50 ^KB "矩形ブロック"」
矩形ブロックモードになります。 カーソルを移動して範囲指定したのち、「削除」「記憶」「挿入」「複写」をおこなってください。
「51 ^Y "削除"」(通常ブロック・矩形ブロック共通)
ブロック範囲を範囲を削除します。
矩形ブロックかつ上書きモードの場合は、周囲の文字列を固定したまま削除します。
「52 ^KK "記憶"」(通常ブロック・矩形ブロック共通)
ブロック範囲を記憶します。
「53 ^J "挿入"」(通常ブロック・矩形ブロック共通)
カーソル位置に行・ブロックを挿入します。
矩形ブロックかつ上書きモードの場合は、周囲の文字列を固定したまま上書きします。
「54 ^KC "複写"」(通常ブロック・矩形ブロック共通)
カーソル位置に行・ブロックを挿入します。テキストスタックの内容は保持しているので、同じ文字列を何度でも複写できます。
矩形ブロックかつ上書きモードの場合は、周囲の文字列を固定したまま上書きします。
「55 ^KU "取消"」
直前の「削除」「記憶」「挿入」「複写」をアンドゥ(取消)します。「記憶」の場合、見た目には何も起こりませんが、取得したばかりの文字列をテキストスタックからクリアします。アンドゥのアンドゥもできます。
「56 ^KS "行末スペースの削除"」
矩形ブロックを切り貼りすると、行末によぶんなタブ・スペースが残ることがあります。行境界のブロックモードでこのマクロを実行すると、削除することができます。範囲指定しない場合は、ファイル全体を処理します。
「57 ^KL "ブロック選択複写"」
モード・メッセージがあらわれます。
[SPC]:順方向[BS]:逆方向[CR]:複写[■]:<ブロック先頭の文字列>
[■]は最近記憶したブロックが矩形ブロックであることを示します。その右側には、ブロックの先頭の文字列が表示されます。
┌───────────┐ │□…通常行 │ │行…行境界ブロック │ │文…文字境界ブロック │ │■…矩形ブロック │ └───────────┘
スペースキーとバックスペースキーで、テキストスタックの中を検索できます。リターンでカーソル位置に複写します。カーソルを移動しながら複写することもできます。
モード型マクロ
キーアサインに悩む人のために、モード型のマクロを用意しました。
マクロファイルの先頭にある「89 "【矩形ブロック】"」を実行すると、次のモードメッセージがあらわれます。
【矩形ブロック】 桁揃え<スペース> [Esc]:メニュー
[ESC]を押すと、次のメニューがあらわれます。
┌─【矩形ブロック】─┐ │B 矩形ブロックモード│ │Y カット (削除)│ │K コピー (記憶)│ │J インサート(挿入)│ │P ペースト (複写)│ │U アンドゥ (取消)│ │S 行末スペースの削除│ │L ブロック選択複写 │ │E 桁揃え <SPC> │ │F フリーカーソル │ │Q 終 了 │ └──────────┘
「B」~「L」は、基本操作の項で説明したマクロと同じ動作をします。
カーソルの移動や文字入力などおこないながら、適宜[ESC]+[英字]でブロックを操作できるわけです。
「E 桁揃え」
矩形ブロックを操作したとき、桁揃えのためにタブとスペースのどちらを挿入するか切り替えます。起動時はスペースになっています。通常はスペースのままでよいでしょう。
「F フリーカーソル」
フリーカーソルのON/OFFを切り替えます。(起動時はON)
フリーカーソルONのとき、カーソルは行末以降でも自由に動かすことができます。 [SHIFT]+[<--]、[SHIFT]+[-->] だと、タブサイズで動きます。文字入力すると、その位置から書き込まれます。矩形ブロックの挿入・複写でも有効です。
「Q 終 了」
モードを終了します。
動作原理
VZは行・ブロックをテキストスタックに混在して記憶しています。挿入・複写するときにはどうやって区別するかというと、文字列のあとに、ブロックのタイプとブロックのサイズの情報を書き込んでいます。
string type size ┌─┬────────────┬─┬──┬──┐ │新│.........(行境界) │01│0216│(kp)│ │ ├────────────┼─┼──┼──┘ │↑│... (1行) │00│0073│ │ ├────────────┼─┼──┤ │ │abcd (矩:第1行) │08│0004│ │ ├────────────┼─┼──┤ │ │12345678 (矩) │04│0008│ │ ├────────────┼─┼──┤ │ │アイウエオ (矩) │04│0005│ │ ├────────────┼─┼──┤ │ │ABC (矩:第1行) │08│0006│ │ ├────────────┼─┼──┤ │ │12345678(矩) │04│0016│ │ ├────────────┼─┼──┤ │ │... (文字境界) │02│0072│ │ ├────────────┼─┼──┤ │↓│.........(1行) │00│0256│ │ ├────────────┼─┼──┤ │旧│.... (行境界) │01│0515│ └─┴────────────┴─┴──┘
「新」「旧」に注意してください。テキストスタックは「スタック(積み重ねる)」という名の通り、最後に積んだ文字列がいちばん上にあります。「挿入」や「複写」のさい、VZはブロック情報(システム変数 kp の直前)を参照して、どういう状態で復活させるか、また、メモリをどれだけ遡って文字列を復活させればよいか判断します。
VZがver1.57時点でサポートしている行・ブロックのタイプには0(通常行)、1(行境界)、2(文字境界)しかありません。標準添付のblock.defは、矩形ブロックの範囲を1行ずつ文字境界で取得して、その行数を変数ccに保存することによって、1回のみのカット・ペーストを実現しています。
この「究極の矩形ブロック」では、ブロックタイプの情報を強制的に4あるいは8に変更することによって、多重記憶を可能にしました。ブロックを復活させる前にブロックのタイプを調べて、もし8だったら矩形ブロックの処理をおこないます。矩形ブロックが連続している場合を考慮して、先頭の1行は8、他の行は4にしています。
ビット演算の知識がある人ならおわかりでしょうが、0を左シフトしていくと、1,2,4,8,...と変化しますから、いちおう整合性(?)があると言えます。
ところで、ブロックタイプ4または8の文字列を通常のコマンドで復活させると、どうなるでしょうか?
カーソルの桁位置とは無関係に、論理行頭に復活します。カーソルの桁位置は変わりません。ちょっと戸惑いますが、通常行や行境界ブロックと同じ動作です。「6をいれてやれば、第1ビットが2と同じになるので、文字境界と同じ動作になるかな」と考えて実験してみましたが、駄目でした。どうやらVZは2以外は論理行頭に復活させるようです。したがって、復活させる前に2に戻してやらなくてはなりません。
5-15 IDEA.DEF アイデアプロセッサ
【機能】
VZ ver 1.56に添付されたアウトラインマクロ(c.mos 氏作)を改変したマクロです。
オリジナルでは最低限のアウトライン機能しか提供されておらず、本文で見出しを新規作成すると、アウトラインとくいちがいが生じるため、あらためてアウトラインを抽出し直さなくてはなりません。
そこで、アウトラインと本文を連動させて、見出しの書き換えや新規挿入ができるようにしてみました。ほかにも、タイトル行単位のスクロール、モード型マクロ化など機能を加えました。
マクロを実行すると、次のようなモードメッセージがあらわれます。
<<< Idea Mode >>> Level:0 Mark:# [Esc]:Menu
[ESC]を押すと、次のようなメニューがあらわれます。
┌ Idea Processor ─┐ │ Jump │ │ Scope │ │ Up Level │ │ Down Level │ │ Insert Title │ │ Edit Title │ │ Move Title │ │ Backward Title │ │ Forward Title │ │ Load Outline │ │ Pair File │ │ Outside Macro │ │ Change Mark │ │ Quit │ └─────────┘
「Jump」本文とアウトラインとの切り替え
「Jump」は、本文とアウトライン作成キーを兼ねています。まだアウトラインがなくても、かまわずに「Jump」を実行してください。
本文とアウトラインのどちらかがディスクにセーブされている場合には、それをオープンします。
本文からアウトラインにジャンプするとき、カーソルをタイトル行に合わせる必要はありません。自動的にカーソル位置より上にタイトル行を探して、ジャンプします。次の「Scope」で指定した階層よりも下のタイトル行はスキップします。
本文とアウトラインにくいちがいがある場合には、自動的にアウトラインを再作成します。
アウトライン作成直後には、「Save This Outlineか?(Y/N)」と問い合わせます。
「Scope」アウトラインの階層の深さを調整
アウトラインの階層の深さを調整することができます。
┌───┐ │ 1st │ │ 2nd │ │ 3rd │ │ 4th │ │ 5th │ │ 6th │ │ 7th │ │ 8th │ │ 9th │ │ Quit │ └───┘
上のようなメニューがあらわれるので、'1'~'9'を選択してください。
まだアウトラインがない場合には、自動的に作成します。
起動直後のモードメッセージ「Level:0」の数字が変わります。
「Up Level」レベルアップ
アウトラインでのみ有効です。
カーソルのあるタイトル行のレベルを上げます。(識別記号がひとつ増える)
「Down Level」 レベルダウン
アウトラインでのみ有効です。
カーソルのあるタイトル行のレベルを下げます。(識別記号がひとつ減る)
「Insert Title」新規タイトル挿入
アウトラインと本文を連動して、新規タイトルを挿入できます。
実行すると、 アウトラインと本文にそれぞれ1行挿入して、 分割表示し、<< Scope >> と同じメニューがあらわれます。 '1'~'9'を選択すると、 その個数分の識別記号を両画面に書き込み、次のようなモードメッセージがあらわれます。
<<< Synchronized Mode >>> [Esc]:Menu
そのままタイトルの内容を入力すると、あら不思議! 両画面に同じ文字が書き込まれます。
[ESC]でさっきと同じメニューをだして、「Quit」で「Idea Mode」に戻ります。'1'~'9'を選択すると、タイトルの階層(識別記号の個数)を瞬時に変更することができます。
<<< Synchronized Mode >>> の制限
アウトラインと本文の連動中は、文字入力やカーソル移動など簡単な操作だけにしてください。ほかのマクロ(VZ.DEFの内部マクロを含む)を実行すると、一方の画面にしか反映されません。これはVZのモード型マクロの宿命であり、いまのところ回避する方法がありません。
「Edit Title」タイトル編集
アウトラインと本文を分割表示します。
あとは、前述の << Insert Title >> と同じです。
「Move Title」タイトル移動
アウトラインでのみ有効です。
実行すると、カーソル位置のタイトルをカットします。
カーソルで位置を移動してリターンを押すと、そこにタイトルを挿入します。連動して、本文も移動します。
「カーソルキーで位置を移動して[CR]」とメッセージがでているあいだは、ほかのマクロを実行したり、テキスト切り替えたりしてはいけません。移動先がわからなくなり、元に戻したいときには、[ESC]を押してください。 カット前の状態に戻ります。
※ ファミリー移動
下の階層をひきつれてカット&ペーストするには、「Scope」でアウトラインをおりたたんでから実行してください。あるいは、行境界のブロックモードで範囲指定して実行してください。
巨大ブロックに対応するために、作業用ファイル「ol.tmp」を使用するので、テキスト数に余裕が必要です。
「Backward Title」後方タイトル
カーソル位置から後方にタイトル行を検索します。
「Foroard Title」前方タイトル
カーソル位置から前方にタイトル行を検索します。
「Load Outline」アウトラインファイル選択
「*.out」というワイルドカードで、ファイラーを起動します。
環境設定で、アウトラインの保存ディレクトリを指定している場合には、そのディレクトリをオープンします。
ファイルを呼び出したあと、<<< Idea Mode >>> に戻ります。
シフト実行
シフトキーを押しながら選択すると、現在カーソルのあるペアファイル(本文とアウトライン)をクローズしてから、ファイラーを起動します。編集が加えられていた場合には、「~を出力しますか? (Y/N)」と問い合わせます。
「Pair File」ペアファイル切り替え
単純に本文とアウトラインを切り替えるだけなので、カーソル位置を動かさずに済みます。
「Outside Macro」外部マクロ連携(outlaw.def 必要)
<<< Idea Mode >>>からダイレクトに他の外部マクロに切り替えることができます。
このドキュメントでもたびたび書いているように、特定のモード中に、ほかのマクロを実行するのは危険です。したがって、[ESC]でメニューをだし、「Quit」でモードを終了してから、ほかのマクロを実行する、という手順を踏まなくてはなりません。
そこで、モード終了とマクロ実行を同時におこなう機能を用意しました。
0: ;--- Outside Macro ---
&q dd="outside", nn=0, >88 ;★
これは、拙作の外部マクロローダーoutlaw.defに「外部マクロファイル名(.def不要)」と「マクロ番号」をわたす命令です。よく使うマクロに書き換えておくとよいでしょう。マクロメニュー(exkey.def、macmenu.defなど)を呼び出すのも一案です。
「Change Mark」タイトル識別記号変更
次の箇所で定義された識別記号を切り替えます。
56: ;--- Title Mark ---
(pp)
? m='■', ; 1文字のみ
? m='#', ; 1文字のみ
ほかのマクロで変数ppがこわれると、知らないうちに記号が切り替わってしまい、ジャンプができなくなります。(テキストは切り替わります)
競合を避けるために、ほかの変数に置換してもかまいませんが、idea.defですでに使われている変数と重複しないように気をつけてください。マクロファイルの先頭に【使用変数】一覧があります。
「Quit」 <<< Idea Mode >>> 終了
アウトラインをクローズして、<<< Idea Mode >>> を終了します。編集が加えられていた場合には、「~を出力しますか? (Y/N)」と問い合わせます。
シフト実行
シフトキーを押しながら選択すると、さらに本文もクローズします。編集が加えられていた場合には、「~を出力しますか? (Y/N)」と問い合わせます。
付録FD: IDEA098.DEF IDEA098.DOC
5-16 RENBAN.DEF 3階層ナンバリング
【機能】
見出し行を3階層までナンバリングします。
【解説】
初期設定では見出しの識別記号は「#」になっています。VZ ver1.56に添付のアウトラインマクロとの相性を考慮しました。
見出し記号の書式
第1階層は「#」、第2階層は「##」、第3階層「###」を行頭においてください。
見出し記号のあとには、最低1個スペース(半角で全角でも可)をおいて、見出し本文を書くようにしてください。さもないと、後述の「Restore Mark」で、見出し記号と本文の区別をができず、誤動作します。
有意の行頭のみ有効
タブ・スペースをのぞく行頭に「#」がある場合にのみ、見出し行と判断します。
階層に応じたインデント
階層に応じて自動的にインデントされるので、使用者がインデントしておく必要はありません。行頭から階層個数分の記号を書いてください。
マクロを実行すると、次のようなメニューがでます。
┌ renban3───┐ │ Numbering │ │ Convert Mark │ │ Restore Mark │ │ Delete Mark │ │ Select Mark │ │ Zenkaku [OFF]│ └───────┘
「Numbering」ナンバリング
【見出し記号複数個】を、【見出し記号1個】+【連番】に変換
階層(「#」の個数)に応じて、「1-2」「2-4-1」のようにナンバリングします。「#」は1個だけ残ります。
再ナンバリング
【見出し記号1個】+【連番】の形式のまま、ナンバリングできるので、ナンバリング後に見出しの順序を入れ換えても大丈夫です。 ただし、「#」の直後に数字がある場合にのみ有効です。
「Convert Mark」見出し記号変換
「#」を、階層に応じて「§」「■」「□」に変換します。ナンバリングも同時におこないます。見出し記号変換後、再度ナンバリングするには、次の「Restore Mark」でいったん元に戻してください。
「Restore Mark」見出し記号復活
「§」「■」「□」を階層に応じた個数の「#」に復活します。RENBAN.###の登録内容にしたがって、復活することもできます。
「Delete Mark」見出し記号削除
見出し記号「#」を削除します。本文中に含まれる「#」は対象となりません。削除後は、ナンバリングや見出し記号復活はできなくなります。文書作成の最終段階で使う、特殊な機能とお考えください。
「Select Mark」変換記号をリストから選択
VZ.DEFと同じディレクトリにあるRENBAN.###というデータファイルを参照して、変換記号を変更することができます。データの書式は次の通りです。
renban # §■□ dummy ■ §■□ ---------------------------------------- renban $ # 第1章 【1】 1-1-1. ---------------------------------------- .doc .txt $ # 第1章 ■1-1 (1) ---------------------------------------- c:\vz\ $ # 【1】 ■1-1 (1)
【規定書式】
1~2行目のように、論理行頭から【登録名】<タブ>【見出し記号】<タブ>【第1~3階層記号】の順で記述します。
※ 記号(文字タイプct=3
)以外の文字を登録すると、選択時に「指定が違います」とメッセージがでて中断します。
【自由書式】
4行目以降のように、書式を自由にレイアウトすることもできます。【登録名】<タブ>のあとに、「$」を書いておくと、自由書式とみなして、その次の4行から見出し情報を取得します。【見出し記号】【第1階層記号】【第2階層記号】【第3階層記号】の順で書いてください。
注意
- 【登録名】は「.doc .txt」のように、複数書くことができます。あいだは半角スペースで区切ってください。
- 上の例のように、親階層を省略して書いてもかまいません。
- 数字は半角でも全角でもかまいません。「1」以外の数字でもかまいません。
- 「Restore Mark」でも、この選択をもとに復活させます。ただし、「1-1-1.」のように、先頭に記号がない場合は、復活できません。また、「■ 1」のように、書式の途中にタブ・スペースで間隙があってもうまくいきません。
- 書式のあいだには、見やすいように適当に区切り線など書いてください。
書式読み込み
「Select Mark」を実行すると、編集中テキストの
「主ファイル名」「拡張子名」「ディレクトリ名」
の優先順位で、RENBAN.### を検索します。
登録されている場合
記号を読み込んで、メッセージに表示します。それを確認したうえで、メニューから次の処理を選択してください。
未登録の場合
RENBAN.### がオープンして、
[CR]:Select [Esc]:Quit \[Esc]:Stop
とメッセージが出ます。
カーソルを移動してリターンで、任意の設定を選択できます。
[Esc]で RENBAN.### をクローズしてメニューに戻ります。
[Shift]+[Esc]で RENBAN.### をオープンしたままマクロを終了します。
シフト実行
[Shift] +[S]で実行した場合には、登録の有無にかかわらず、RENBAN.###がオープンして、選択をうながします。
「Zenkaku」半角/全角モード切り替え
「Zenkaku [ON]」にしてナンバリングを実行すると、数字が全角になります。初期設定では、OFF で起動します。[ON]で起動するには、「fa+,
」の行を生かしてください。
fa-, ;◆ 半角モード起動
; fa+, ;◇ 全角モード起動
付録FD: RENBAN4.DEF RENBAN4.DOC RENBAN.### RENBAN4.TXT
5-17 VZKEI.DEF 罫線自由自在
【機能】
VZで自由自在に罫線をひくことができます。文字をコピーして線をひいたり、半角/全角の疑似罫線をひいたりすることもできます。キーアサインに悩む人のために、カーソル固定モード、始点・終点式による操作法を用意しました。表の拡大・縮小もできます。
マクロを実行すると、初期設定では次のメッセージがでます。
【罫線トレース [─]】 [Esc]:メニュー [Ins]:罫種
この状態で、割り当てたキーで上下左右に自由に罫線をひくことができます。
罫線の太さを変えるには、罫線上で[Ins]を押してください。メッセージの[─]が[━]に変わると同時に、カーソル位置の罫線が変換されます。「┼╂┿╋」のように数種類ある場合には、順次変換されます。単純に罫種を変えるだけなら、メニューを介してください。
[Esc] を押すと、次のメニューがでます。
┌─【vzkei】 ──┐ │K 罫種変更 │ │T 文字トレース │ │H 半角疑似罫線 │ │Z 全角疑似罫線 │ │A 矢印キー固定 │ │B 始点・終点 │ │F フリーカーソル│ │Q 終了 │ └────────┘
「K 罫種変更」
罫線の太さ(メッセージに表示)が変わります。
罫線トレース以外のモードから戻るときにも、これを選択してください。
「T 文字トレース」
メッセージが変わります。
《文字トレース》
カーソル位置の文字をコピーして、上下左右に線をひくことができます。
「H 半角疑似罫線」
---------+ | +---+------ このような線をひくことができます。 | | +---+
「Z 全角疑似罫線」
――――+ | +―+――― このような線をひくことができます。 | | +―+
「A 矢印キー固定」
カーソルキーのみで線をひくモードになります。メッセージに
[↑][↓][←][→]
が表示されます。キーアサインに悩む人は、これを使ってもよいでしょう。罫線をひく作業と、単純な移動とを使い分けるには、[Esc]を2回押す(メニューを開いて閉じる)と、交互に切り替わります(「[↑][↓][←][→]」が表示されたり消えたりする)。
このモードを抜けるには、あらためてメニューで「A 矢印キー固定」を選択してください。
「B 始点・終点」
始点・終点を指定して、箱型の罫線をひくモードになり、「◇始点でリターン◇」と表示されます。
リターンを押すと、全角文字の上なら「◆」、半角文字の上なら「*」に置き代わり、「◆終点でリターン◆」と表示されます。
適当な位置で再びリターンを押すと、箱型罫線をひきます。直線もひけます。終点でリターンを押す前に[Esc]を押すと、カーソルは始点に戻り、マークは消えて、元の文字になります。
「F フリーカーソル」
モード中は改行以降にもカーソルが移動します。
それをON/OFFするには、これを選択してください。
「Q 終了」
モードを終了します。
罫線を削除するには
《文字トレース》モードで代用します。
罫線上で ^G,[Del] を押すと、スペースに置き代わりますので、そのスペースで罫線上をなぞってください。
罫線上に文字を書くには
罫線上に文字を書くことはできません。^G,[Del]でスペースに置き換えておいてから入力してください。
罫線モード中の文字入力・移動・コマンド
- フリーカーソル状態にあるので、改行以降の任意の位置からいきなり文字入力できます。
- 罫線枠内で文字入力しても枠がずれません。挿入/上書きモードによって、動作がことなります。
- 罫線枠内で文字列の削除や挿入をしても枠がずれません。枠からあふれて消えた文字は復活できません。ブロックの操作は、文字境界のブロックモードのみ有効です。とはいえ、他の行・ブロックの削除・挿入は禁じていないので、単純な行の移動はVZの基本機能で実行できます。
- タブで、右側の罫線枠内の先頭へ移動します。改行以降では、タブカラムごとに移動します。「矢印キー固定」モード中は、罫線の交点から交点へ移動します。タブコードそのものを入力するには、^PI のキー操作をおこなってください。
- 罫線のすぐ右側にカーソルがあるときに、バックスペースを押すと、左側の罫線枠内の先頭へ移動します。
- リターンで下側の罫線枠内の先頭へに移動します。
注意
- 半角/全角疑似罫線モードでは、疑似罫線の枠内で有効です。本物の罫線は、モーにかかわらず保護されます。
- 該当する操作キーが vz.def 内でマクロキーとして使われている場合には、そちらが実行されてしまいます。
表拡大・縮小
「B 始点・終点」モード以外のとき、「上枠」か「左枠」罫線上でリターンを押すと、次のメッセージがでます。
【拡大・縮小 [─]】[↑][↓][←][→] [CR]or[Esc]:終了 [Ins]:罫種
操作例(■がカーソル位置)
┌────■┬───────┐ ┌─────■┬───────┐ │氏 名 │フ リ ガ ナ │ [→] │氏 名 │フ リ ガ ナ │ ├─────┼───────┤ ├──────┼───────┤ │高岡早紀 │タカオカ サキ│ =======> │高岡早紀 │タカオカ サキ│ ├─────┼───────┤ ├──────┼───────┤ │八木さおり│ヤギ サオリ │ 横拡大 │八木さおり │ヤギ サオリ │ └─────┴───────┘ └──────┴───────┘
┌────■┬───────┐ ┌────■───────┐ │氏 名 │フ リ ガ ナ │ [←] │氏 名│フ リ ガ ナ │ ├─────┼───────┤ ├────┼───────┤ │高岡早紀 │タカオカ サキ│ =======> │高岡早紀│タカオカ サキ│ ├─────┼───────┤ ├────┼───────┤ │八木さおり│ヤギ サオリ │ 横縮小 │八木さお│ヤギ サオリ │ └─────┴───────┘ └────┴───────┘
┌──■──┬───────┐ ┌──■───┬───────┐ │氏 名 │フ リ ガ ナ │ [↓] │氏 │ 名 │フ リ ガ ナ │ ├─────┼───────┤ ├──┼───┼───────┤ │高岡早紀 │タカオカ サキ│ =======> │高岡│早紀 │タカオカ サキ│ ├─────┼───────┤ ├──┼───┼───────┤ │八木さおり│ヤギ サオリ │ 縦線挿入 │八木│さおり│ヤギ サオリ │ └─────┴───────┘ └──┴───┴───────┘
┌─────┬───────┐ ┌─────┬───────┐ │氏 名 │フ リ ガ ナ │ [↓] │氏 名 │フ リ ガ ナ │ ├─────┼───────┤ ├─────┼───────┤ ■高岡早紀 │タカオカ サキ│ =======> ■ │ │ ├─────┼───────┤ │高岡早紀 │タカオカ サキ│ │八木さおり│ヤギ サオリ │ 縦拡大 ├─────┼───────┤ └─────┴───────┘ │八木さおり│ヤギ サオリ │ └─────┴───────┘
┌─────┬───────┐ ┌─────┬───────┐ │氏 名 │フ リ ガ ナ │ [↑] │氏 名 │フ リ ガ ナ │ ├─────┼───────┤ ├─────┼───────┤ ■高岡早紀 │タカオカ サキ│ =======> ■─────┼───────┤ ├─────┼───────┤ │八木さおり│ヤギ サオリ │ │八木さおり│ヤギ サオリ │ 縦縮小 └─────┴───────┘ └─────┴───────┘
┌─────┬───────┐ ┌─────┬───────┐ │氏 名 │フ リ ガ ナ │ [→] │氏 名 │フ リ ガ ナ │ ├─────┼───────┤ ├─────┼───────┤ ■高岡早紀 │タカオカ サキ│ ■─────┼───────┤ ├─────┼───────┤ =======> │高岡早紀 │タカオカ サキ│ │八木さおり│ヤギ サオリ │ ├─────┼───────┤ └─────┴───────┘ 横線挿入 │八木さおり│ヤギ サオリ │ └─────┴───────┘
ただし、最後の例のように、同じ行に別の表がある場合には、他方の表に1行分の隙間ができます。半角/全角疑似罫線の表でも、それぞれのモードで有効です。
おまけの機能
文字境界のブロックモードでリターンを押すと、囲み罫線をひきます。
必ず左から右へ範囲指定してください。
環境設定
キーアサインなど少々複雑ですので、ドキュメントで詳しく述べています。
5-18 VZHYO.DEF 表変換+罫種変換
【機能】
タブ区切りデータをワンタッチで表組に変換します。表の罫種(細/太)も簡単に変換できます。
【解説】
マクロを実行すると、次のようなメッセージがあらわれます。
【表変換】モード
【表変換】 [CR]:罫種変換 [ESC]:メニュー
[ESC]を押すと、次のようなメニューがあらわれます。
┌ 【表変換】 ┐ │N 標準型 │ │V 縦線のみ │ │H 横線のみ │ │C 罫種変換 │ ※ 行境界のブロックモードでマクロを実行すると、 │Q 終了 │ いきなりメニューがあらわれます。 └──────┘
「N 標準型」「V 縦線のみ」「H 横線のみ」を選択すると、
行境界のブロックで範囲指定してリターン [ESC]:中止
とメッセージが出ます。
タブコードで区切ったデータを行境界のブロックで範囲指定してリターンを押すと、表組に変換します。あらかじめ範囲指定しておくと、メニュー選択ですぐに変換を開始します。
実行例(1)
タブ区切りデータ
氏 名 フ リ ガ ナ 生年月日 本 名 高岡早紀 タカオカ サキ 721203 高岡佐紀子 八木さおり ヤギ サオリ 691120 八木小織
「N 標準型」変換
┌─────┬───────┬────┬─────┐ │氏 名 │フ リ ガ ナ │生年月日│本 名 │ ├─────┼───────┼────┼─────┤ │高岡早紀 │タカオカ サキ│721203 │高岡佐紀子│ ├─────┼───────┼────┼─────┤ │八木さおり│ヤギ サオリ │691120 │八木小織 │ └─────┴───────┴────┴─────┘
「V 縦線のみ」変換
┌─────┬───────┬────┬─────┐ │氏 名 │フ リ ガ ナ │生年月日│本 名 │ │高岡早紀 │タカオカ サキ│721203 │高岡佐紀子│ │八木さおり│ヤギ サオリ │691120 │八木小織 │ └─────┴───────┴────┴─────┘
「H 横線のみ」変換
┌────────────────────────┐ │氏 名 フ リ ガ ナ 生年月日 本 名 │ ├────────────────────────┤ │高岡早紀 タカオカ サキ 721203 高岡佐紀子│ ├────────────────────────┤ │八木さおり ヤギ サオリ 691120 八木小織 │ └────────────────────────┘
※注意
- いちばん長い項目にあわせて、縦線の位置が決定されます。
- 表組の桁位置は、タブ区切りデータの第1行・第1項目(この例では「氏 名」)の桁位置を引き継ぎます。
- データ中の空行は無視されます。
実行例(2)
項目数が違うデータ
各行で項目数がちがうと、左詰めで変換します。
項目数がちがうデータ
氏 名 フ リ ガ ナ 生年月日 本 名 高岡早紀 タカオカ サキ 高岡佐紀子 八木さおり ヤギ サオリ 691120 八木小織
変換後
┌─────┬───────┬─────┬────┐ │氏 名 │フ リ ガ ナ │生年月日 │本 名│ ├─────┼───────┼─────┼────┤ │高岡早紀 │タカオカ サキ│高岡佐紀子│ │ ├─────┼───────┼─────┼────┤ │八木さおり│ヤギ サオリ │691120 │八木小織│ └─────┴───────┴─────┴────┘
これを避けるには、空欄にダミーの文字をいれてください。
実行例(3)
空欄をダミーの文字で埋めたデータ
氏 名 フ リ ガ ナ 生年月日 本 名 高岡早紀 タカオカ サキ - 高岡佐紀子 八木さおり ヤギ サオリ 691120 八木小織
変換後
┌─────┬───────┬────┬─────┐ │氏 名 │フ リ ガ ナ │生年月日│本 名 │ ├─────┼───────┼────┼─────┤ │高岡早紀 │タカオカ サキ│- │高岡佐紀子│ ├─────┼───────┼────┼─────┤ │八木さおり│ヤギ サオリ │691120 │八木小織 │ └─────┴───────┴────┴─────┘
エラーメッセージ「テキスト領域がいっぱいです」
「VZHYO.TMP」という作業用ファイルにデータを複写して、変換処理をおこなっています。テキスト数に余裕がないと、「テキスト領域がいっぱいです」とメッセージをだします。
変換前データのバックアップ
変換前のデータ1回分を「VZHYO.DAT」というファイル名でカレントディレクトリにセーブしています。処理結果が気に入らない場合は、このファイルをオープンして変換前のデータを取り戻してください。
バックアップが不要の場合は、次の行を削除してください。
#S "VZHYO.DAT" #m (s)? 'Y' ; ★変換前データのバックアップ
《罫種変換》モード
【表変換】モードで、カーソルを罫線上においてリターンを押すと、
《罫種変換》 [↑][↓][←][→] [CR]or[ESC]:終了
とメッセージが出ます。
カーソルキーを押した方向の罫線の種類(細線/太線)を変換します。
┌─────┬───────┬────┬─────┐ │氏 名 │フ リ ガ ナ │生年月日│本 名 │ [→] ■━━━━━┿━━━━━━━┿━━━━┿━━━━━┥ 横線を太くする │高岡早紀 │タカオカ サキ│721203 │高岡佐紀子│ ├─────┼───────┼────┼─────┤ │八木さおり│ヤギ サオリ │691120 │八木小織 │ └─────┴───────┴────┴─────┘
┏━━━━━┯━━━━━━━┯━━━━┯━━━━━┓ ┃氏 名 │フ リ ガ ナ │生年月日│本 名 ┃ [↓] ■━━━━━┿━━━━━━━┿━━━━┿━━━━━┫ 外枠を太くする ┃高岡早紀 │タカオカ サキ│721203 │高岡佐紀子┃ ┠─────┼───────┼────┼─────┨ ┃八木さおり│ヤギ サオリ │691120 │八木小織 ┃ ┗━━━━━┷━━━━━━━┷━━━━┷━━━━━┛
[↓] ┏━━━━━■━━━━━━━┯━━━━┯━━━━━┓ ┃氏 名 ┃フ リ ガ ナ │生年月日│本 名 ┃ ┣━━━━━╋━━━━━━━┿━━━━┿━━━━━┫ 縦線を太くする ┃高岡早紀 ┃タカオカ サキ│721203 │高岡佐紀子┃ ┠─────╂───────┼────┼─────┨ ┃八木さおり┃ヤギ サオリ │691120 │八木小織 ┃ ┗━━━━━┻━━━━━━━┷━━━━┷━━━━━┛
表でなくても、罫線のつながりを判断して変換します。
■──────┐ ■━━━━━━┓ [→] │ ┃ ┌──┘ 変換 ┏━━┛ ┌─┼──── =====> ┏━╋━━━━ │ │ ┃ ┃ └─┘ ┗━┛
※■はカーソル位置を意味します。
カーソル位置は始点のままです。終点へ移動したほうがよい場合は、
:C ? { #] cp=x, ky=y,. } ;【表変換】モードに戻る
;:C ? { #] cp=x, ky=y, >^ } ;《罫種変換》モードのまま
;:C ?. ; 元の位置へ戻らない
の部分で、1行目の代わりに3行目を生かしてください。2行目を生かすと、《罫種変換》モードにとどまります。
文字入力未対応
【表変換】モードや《罫種変換》モードではVZの通常のコマンドが有効です。ただし、表中で文字を入力すると罫線がずれます。現在のところ、文字入力に対応した姉妹編(?)のvzkei.defとの併用をおすすめします。
5-19 SEIKEI.DEF 手軽に文書整形
【機能】
- 和文、欧文のための文書整形ができます。
- 和文に欧文単語が混在している場合のオートスペースを挿入できます。
- 整形後の文書を連結することができます。
最初に次のメニューがあらわれます。
┌─<< Seikei 8 >>─┐ │ Japanese │ │ European │ │ Scenario │ │ Connect │ │ Novel │ │ Left [0] │ │ Right [72] │ │ Auto Space [OFF]│ │ Tail Adjust [ON] │ └─────────┘
「Japanese」和文整形
行境界のブロックで範囲指定できる
範囲を指定しない場合は、カーソル行以降、ファイルの最後までを一括して整形します。整形の過程を表示するので、中断したいときには、[ESC]を押してください。
段落の始まりは行頭の全角スペース
段落の始まりは行頭の全角スペースで判断します。ここで言う行頭とは、半角スペースによるインデント(字下げ)以外で最初にあらわれる文字を意味します。
見出し記号によるインデント
次の部分で定義された記号があらわれると、以降の文章を記号より右側へインデントします。
ii= ; 見出しインデント記号
"■□※・●○◎★*",
- あらたに見出し記号があらわれると、その見出し記号に対応したインデントに再設定されます。
- 空行が2行以上続くと、見出しインデントは解除されて、通常のインデント(「Left」で設定)に戻ります。
- 見出し記号の種類によって、階層をつくりたい場合には、任意個の全角スペースでインデントしておいてください。半角スペースによるインデントは、削除されてしまうので意味がありません。
和文に欧文単語が混在しているときのオートスペース
和文に欧文単語が混在しているときには、メニューで「Auto Space」を[ON]にしておくと、半角スペースを挿入してバランスを整えることができます。
「これをAuto Space機能と呼びます」(整形前) 「これを Auto Space 機能と呼びます」(整形後)
ただし、この機能を使うと、チェックに時間がかかるので、初期設定では[OFF]になっています。
fa-, ; << Auto Space >> OFF
常時[ON]で使いたいときには、fa+,
と書き換えてください。
文章を入力するときに、手動で半角スペースを挿入して整えておくことをおすすめします。
「European」欧文整形
行境界のブロックで範囲指定できます。範囲を指定しない場合は、カーソルのある行以降、ファイルの最後までを一括して整形します。整形の過程を表示するので、中断したいときには、[ESC]を押してください。
段落の区切りは、処理開始行のインデントをもとに判断
段落の区切りは、処理開始行のインデントをもとに判断します。以降の行で、同量のインデントがあらわれると、そこを段落の区切りとみなします。
段落の始まりのインデント量
初期設定では[2]になっています。
e=2, ; << European >> 段落インデント数
オートスペース機能は自動的に[ON]
「European」では、オートスペース機能は自動的に[ON]になるので、メニューでわざわざ[ON]にする必要はありません。和文処理にくらべて、時間がかかるのはこのためです。
「Scenario」シナリオ形式インデント
+―――――――――――――――――――――――――――――――――――――+ | ※ 蜃気楼の王が岩窟をすすむと、ふたつの扉のまえで、アンモ| |ナイトとシイラカンスが見張りをしていた。 | | | | 蜃気楼の王 「魔王のいる場所へはどちらの扉をゆけばよいのか」 | | アンモナイト 「我々のどちらにきいているのだ?」 | | 蜃気楼の王 「どちらでもよい」 | | シイラカンス 「どちらか一人に、一度だけ質問を許す。ただし――」 | | アンモナイト 「シイラカンスは必ず嘘を言う」 | | シイラカンス 「アンモナイトは必ず真実を言う」 | | 蜃気楼の王 「では、アンモナイトにきこう。シイラカンスが『魔王の居る場| |所へは右の扉を進めばよい』と言ったら、その言葉は真実なのか。それとも嘘なの| |か」 | +―――――――――――――――――――――――――――――――――――――+
上のような文章を Left [8]、Right [64]で整形すると、
+―――――――――――――――――――――――――――――――――――――+ | ※ 蜃気楼の王が岩窟をすすむと、 | | ふたつの扉のまえで、アンモナ | | イトとシイラカンスが見張りを | | していた。 | | | | 蜃気楼の王 「魔王のいる場所へはどちらの扉を | | ゆけばよいのか」 | | アンモナイト 「我々のどちらにきいているのだ?」 | | 蜃気楼の王 「どちらでもよい」 | | シイラカンス 「どちらか一人に、一度だけ質問を | | 許す。ただし――」 | | アンモナイト 「シイラカンスは必ず嘘を言う」 | | シイラカンス 「アンモナイトは必ず真実を言う」 | | 蜃気楼の王 「では、アンモナイトにきこう。シ | | イラカンスが『魔王の居る場所へ | | は右の扉を進めばよい』と言った | | ら、その言葉は真実なのか。それ | | とも嘘なのか」 | +―――――――――――――――――――――――――――――――――――――+
シナリオ形式のインデントは、次の部分で定義されています。
qq=" 「", ; << Scenario >> 用インデント記号
全角スペースも定義されていることに注意してください。'「'のない次のような文章も、シナリオ形式に整形できます。
+―――――――――――――――――――――――――――――――――――――+ | ※ アンモナイトとシイラカンスは不安そうに目配せをかわす。| | | | 蜃気楼の王 はやく答えてもらおう。 | | アンモナイト わ、わかった。……答は『嘘』だ。 | | 蜃気楼の王 よろしい。すると、シイラカンスの『アンモナイトは必ず真実を| |言う』という言葉も嘘にちがいないから、私はきみを信用せずに、右の扉へ進もう| |。 | | アンモナイト い、いや、まちがった。答は『真実』だ。 | | 蜃気楼の王 よろしい。すると、シイラカンスの『アンモナイトは必ず真実を| |言う』という言葉も真実にちがいないから、私はきみを信用して、右の扉へ進もう| |。 | | アンモナイト ………… | | | | ※ アンモナイトとシイラカンスは沈黙し、化石した。 | | 蜃気楼の王はいったん右の扉に手をかけたが、いたずらな天邪鬼にそそのかされ| |て、左の扉へと進んだ。 | +―――――――――――――――――――――――――――――――――――――+
Left [8]、Right [64]で整形すると、
+―――――――――――――――――――――――――――――――――――――+ | ※ アンモナイトとシイラカンスは | | 不安そうに目配せをかわす。 | | | | 蜃気楼の王 はやく答えてもらおう。 | | アンモナイト わ、わかった。……答は『嘘』だ。 | | 蜃気楼の王 よろしい。すると、シイラカンスの | | 『アンモナイトは必ず真実を言う』 | | という言葉も嘘にちがいないから、 | | 私はきみを信用せずに、右の扉へ進 | | もう。 | | アンモナイト い、いや、まちがった。答は『真実』 | | だ。 | | 蜃気楼の王 よろしい。すると、シイラカンスの | | 『アンモナイトは必ず真実を言う』 | | という言葉も真実にちがいないから、 | | 私はきみを信用して、右の扉へ進も | | う。 | | アンモナイト ………… | | | | ※ アンモナイトとシイラカンスは | | 沈黙し、化石した。 | | 蜃気楼の王はいったん右の扉に | | 手をかけたが、いたずらな天邪 | | 鬼にそそのかされて、左の扉へ | | と進んだ。 | +―――――――――――――――――――――――――――――――――――――+
上の例では、「人名」の長さのちがいを調節するために、手動で全角スペースをいれていますが、いちいち個数をかぞえるのが面倒なときには、タブを使うとよいでしょう。< 全角スペース > + < タブ > か < タブ > + < 全角スペース > か、どちらでもかまいません。インデント記号として、「qq=" 「",」にタブを書き加える手もあります。
インデント記号から何桁下げるか
初期設定では[2]になっています。
? xx=lx+vv+2, ;★ xx = << Scenario >> indent
「Novel」小説形式(セリフ行非連結)
小説文のセリフのように、行頭に全角の鍵括弧がある場合、連結しません。
そのほかは「Japanese」と同じ動作をします。
「Left」左端
文書全体のインデント量を再設定できます。
初期設定では[0]になっています。
「Right」右端
桁折れ位置を再設定できます。
初期設定では[72]になっています。
- 「Left」「Right」で再設定した値は、変数 vv, yy に保存されており、次回にマクロを実行したとき、メニューにあらわれます。
- VZの起動直後で変数が初期化されているとき、あるいは他のマクロで変数がこわれて不正な値になっているときには、初期設定に戻ります。
(vv<0)? vv=0, ; << Left >>
(yy>256||yy<3)? yy=72, ; << Right >>
「Connect」連結
和文・欧文を問わず、整形後の文書を連結します。
段落の区切りは、整形のときと同じ方法で判断します。
オートスペース機能[ON]で、文中のよぶんな半角スペースを削除
「Connect」の場合、「Auto Space」の設定が逆の働きをします。[ON]にしておくと、文中のよぶんな半角スペースをすべて削除します。和文に欧文単語が混在している文書は、パソコン上では半角スペースを挿入してバランスを整えたほうが見栄えがよいのですが、電算写植などにデータをわたすときにはかえって邪魔になります。この機能を使って取り除くとよいでしょう。
「Auto Space」オートスペース
- 和文と欧文単語のあいだに半角スペースを挿入して、バランスを整えます。
- この機能を使うと、チェックに時間がかかるので、通常は[OFF]にしておいたほうがよいでしょう。
- 「European」では、自動的に[ON]になります。
- 「Connect」では、逆に文中の半角スペースを除去する働きをします。
「Tail Adjust」行末揃え
桁折れ位置に欧文単語などがあると、語の先頭で改行して、次行へ追い出します。あまったスペースは、句読点や既存のスペース、括弧の後ろに振り分けて、行末を揃えます。初期設定では[ON]になっています。
fd+, ; << Tail Adjust >> ON
行頭スキップ記号
- 行頭にタブのある行は、何も処理しません。
- そのほか、次の部分で定義された文字が行頭にあると、何も処理しません。
"【+|:*/=-:;0123456789",
英数字とのフィックス文字
・オートスペース機能が働いても、英数字と分離されない記号を設定できます。
ff="!@#$$%^&*-~,.$"", ; 英数字とのフィックス文字
※「$$」は「$」という文字そのもの。
「$"」は「"」という文字そのものを表しています。
「81 ^QQ "1 line Japanese"」1行和文整形
「82 ^QE "1 line European"」1行欧文整形
これらのマクロを使えば、範囲指定の手間をかけずに、カーソルのある論理行(段落)だけをただちに整形することができます。文章を入力して、改行の代わりにこのマクロを実行するとよいでしょう。
和文の場合、再整形したいときには、カーソルが段落のどの部分にあっても、段落を認識して処理します。(段落の始まりである全角スペースを上に検索しています)
欧文の場合、カーソルを段落の最初の行において実行すれば、段落を認識して処理します。
ブロック再現
範囲指定による整形直後には、ブロックの範囲がまだ潜在しています。整形の結果が気に入らない場合には、次のマクロでブロックを再現して、ただちに再整形にうつることができます。
80 ^B "reblock"?.(ks&1)? mb+, ? #b &d
単純に [CTRL]+[B]を押すと、通常のブロックモードになります。シフトキーといっしょに [CTRL]+[B]を押すと、潜在しているブロックの範囲を再現します。汎用性があるので、VZ.DEF に直接記述しておくとよいでしょう。
ダイレクト再整形
整形後の文章を別の設定で再整形したいときには、わざわざ連結しておかなくても、ダイレクトに再整形できます。整形後に文章を挿入したり削除したりして、行末がばらばらになっている場合も、見出し記号や段落を認識して再整形します。1行整形マクロでも同じです。
付録FD: SEIKEI8.DEF SEIKEI8.DOC SCENARIO.TXT
5-20 EXPRESS.DEF マクロファイルを高速圧縮
【機能】
VZのマクロの余分なタブやスペースを削除して、サイズを圧縮します。圧縮したいマクロファイルを呼び出して、このマクロを実行してください。
【解説】
- 「
* M
」(マクロ開始)から「*
」のみの行(マクロ終了)までを圧縮します。 - 行頭のタブやスペースは無条件に削除するので、 「
* P
」(メニュー)も若干圧縮されるでしょう。 - vz.defを圧縮することもできます。ただし、「
* M
」より前は処理しないので、適当に切り貼りしてください。 - 元のファイルの拡張子は「.ORG」に変更されます。
- ダミーのマクロ番号として 119 を使用しています。
- VZの内部処理「再カスタマイズ」「キーボードマクロ文の挿入」を利用していますので、圧縮前のマクロが^K^で正常に組み込めることを確かめておいてください。
- 「キーボードマクロ文の挿入」 は<CR>+<LF>を<LF>に変換してしまうようなので、<CR>+<LF>に戻す処理を加えてあります。
- 「$」「"」などのVZのマクロ言語としての特殊な意味を持つ文字を、文字列中に「"$(24)"」「"$(22)"」のような形で埋め込んであると、圧縮後のマクロが不正になります。
付録FD: EXPRESS5.DEF EXPRESS5.DOC
5-21 4BY4.DEF 15ゲーム
【作者】 NOMAD氏
【機能】
実用マクロばかりでは肩がこるので、小意気なゲームマクロを紹介させていただきましょう。
NOMAD氏作の15ゲームです。遊び方は簡単。マクロを起動すると、4×4のマス目に[1]~[15]のコマがでたらめに並びます。1つだけ空いているマス目を利用して、カーソルキーでコマを動かして、正しい順番に並べ替えてください。いかに少ない手数で終了するかが勝負です。
(画面ハードコピー)
自慢ではありませんが、筆者のベストスコアは「43」です。これをNIFTY-ServeのVZ関連会議室で報告したところ、「神業だ」から「またホラが始まった」まで、いろいろな反応をいただきました。(ホントかね)
(画面ハードコピー)
このゲームの3D版(要するに、プラスチック製の本物ね)では、手数をかぞえるのは面倒なので、最短時間を競いました。あわてるとコマが盤外にとびだして大いにタイムをロスしたものです。そう言えば、芯のゆるんだルービックキューブでタイムを競っていたら、デス・スターのごとく崩壊して、泡をくったことがありましたっけ……。
環境設定
罫線が使用されています。初期設定ではPC-9801用になっているので、IBM系のマシンをお使いの方は、マクロファイルの罫線の部分を差し替えてください。
付録FD: 4BY4.DEF
5-22 WRLDTIME.DEF 世界時計
【作者】
【解説】
なんとなく作者の御本名からして凝っているではありませんか。(ゴメンナサイ)
なにはともあれ、マクロを実行してください。天地が創造され、メルカトルの地球が自転します。バーミューダトライアングルの変形など心憎いばかり。[ESC]を押すとメニューが出て、反対方向に自転させたり、夜間区域を表示したり、アラームを設定したりできます。
VZユーザー必携のスクリーンセーバーだッ!
(画面ハードコピー)
付録FD: WRLDTIME.DEF