9. Macros


 

9.1. Allgemeines

Macros sind Sequenzen von Tastatur-Kommandos, die unter einem Namen abgespeichert werden und die auf Tastendruck selbständig wieder ablaufen. Damit lassen sich immer wiederkehrende Bedienfolgen auf einfache Weise automatisch abarbeiten. Macros sind in mbedit schachtelbar, die max. Verschachtelungstiefe ist auf 10 begrenzt. Besonders häufig benötigte Macros können in einem speziellen Macro-File "MBEDIT.MAC" abgelegt werden (siehe auch Kapitel "Macro File"). Der Speicherplatz für jeden einzelnen Macro ist auf 4096 Bytes begrenzt.

9.2. Macro Benutzung

- 'M'acro Kommandos - 'C'reate Anlegen eines Macros: Syntax: 'M'acro 'C'reate <macro name> <cr> ... alle folgenden Tastendrücke werden im Macro gespeichert ... 'M' im Command Mode beendet "Macro Create". - 'D'elete Löschen eines Macros: Syntax: 'M'acro 'D'elete <macro name> <cr> - 'G'et Macro-File einlesen: Syntax: 'M'acro 'G'et <filename> <cr> Der angegebene File wird gelesen und interpretiert (siehe auch Kapitel "Macro-File"). Wird statt eines Macro-Filenamen nur <cr> eingegeben, so wird der aktuelle Text-Buffer als Macro-File interpretiert. (Dazu wird auf der Temp.-Directory ein Hilfs-File namens "MBEDIT.TMP" angelegt.) Auf diese Weise lassen sich Macros leicht editieren und austesten. - 'I'nsert Macro-Kommandos in den Text einfügen: Syntax: 'M'acro 'I'nsert ... alle folgenden Tastendrücke werden in der Macro-Notation in den laufenden Text eingefügt ... ^C beendet "Macro Insert". - 'L'ist Liste aller Macros anzeigen: Syntax: 'M'acro 'L'ist Anzeige - des aktuellen Macro-Files - einer Auflistung aller Macros mit Namen und (in eckigen Klammern) der Länge in Bytes - der Gesamt-Anzahl und -Länge aller Macros - 'S'ave Angegebenen Macro in den Text einfügen: Syntax: 'M'acro 'S'ave <macro name> <cr> Der angegebene Macro wird in der Macro-Notation in den laufenden Text eingefügt. Von hier kann er z.B. mit dem 'B'lock 'P'ut oder dem 'Q'uit 'W'rite Kommando in einen File geschrieben werden. - 'E'xecute Macro Kommando Ausführen eines vorher definierten Macros (mit 'C'reate erzeugt oder per Macro-File eingelesen). Syntax: 'E'xecute <macro name> <cr> - Macro mit Single Character Name Macros, deren Name nur aus einem einzelnen Zeichen besteht, können durch Eintippen dieses Zeichens ausgeführt werden. Es kann sich dabei um ein Sonderzeichen handeln, eine Funktionstaste, oder um einen Buch- staben, der für kein Kommando reserviert ist. Auch kombinierte Tasten- drücke (d.h.: Control- oder Alt-Kombinationen) sind zulässig. Beispiel: Eingabe: MC*<cr> Macro mit Namen "*" erzeugen R<cr><esc><cr> <esc> Replace "<cr>" with "<cr> " d.h.: Zeile um 3 Blanks einrücken ! M "Macro Create" beenden * Macro "*" aufrufen A A A 3-mal 'A'gain 7* Macro "*" 7-mal ausführen /* Macro "*" so oft wie möglich ausführen MS* Macro "*" in den Text einfügen Anzeige: M*\BRr\NL\BR\NL \BR\MM; ||| | | ||| | +-- Ende des Macro ||| +-- Macro Instruktionen ||+-- Ende des Macro-Namen |+-- Macro Name (max. 40 Character) +-- Beginn der Macro-Definition

9.3. Macro Control Codes

Alle Eingegebenen Tastendrücke (auch Sondertasten wie Cursor-Steuerung, Control unt Alt-Kombinationen) werden in einer speziellen Macro-Notation als ASCII-Character gespeichert. Umsetzung mit Hilfe folgender Tabelle: /* function keys */ <F1> \090 bis <F10> \099 /* SHIFT function keys */ Shift <F1> \0A0 bis Shift <F10> \0A9 /* CTRL function keys */ Ctrl <F1> \0B0 bis Ctrl <F10> \0B9 /* ALT function keys */ <ALT F1> \0C0 bis <Alt F10> \0C9 /* cursor keys */ <UP> \CU <DOWN> \CD <RIGHT> \CR <LEFT> \CL /* special keys */ <HOME> \CH <INS> \083 <DEL> \XF <END> \081 <PGUP> \080 <PGDN> \082 /* control special keys */ Ctrl <PGUP> \089 Ctrl <HOME> \088 Ctrl <PGDN> \087 Ctrl <END> \086 Ctrl <RIGHT> \085 Ctrl <LEFT> \084 /* control keys */ -- -- kein ^@ Ctrl A \XA Ctrl B \002 -- -- kein ^C Ctrl D \004 Ctrl E \XE Ctrl F \XF Ctrl G \007 <bell> Ctrl H \RB <backspace> Ctrl I \TB <tab> Ctrl J \0A <lf> Ctrl K \00B Ctrl L \00C Ctrl M \NL <cr> Ctrl N \XN Ctrl O \00F Ctrl P \010 Ctrl Q \011 Ctrl R \XH Ctrl S \XS Ctrl T \CR Ctrl U \XU Ctrl V \016 Ctrl W \017 Ctrl X \XX Ctrl Y \019 Ctrl Z \XZ Ctrl [ \BR <esc> Ctrl \ \CD Ctrl ] \CH Ctrl ^ \CU Ctrl _ \CL \ \\ <backslash> /* CTRL diverse keys */ Ctrl 2 \0D@ /* ALT diverse keys */ Alt 0 \0D0 bis Alt 9 \0D9 Alt - \0DM Alt = \0DE /* ALT alpha keys */ Alt A \0EA bis Alt Z \0EZ

9.4. Macro File

Der Macro-File "MBEDIT.MAC" enthält alle Einstellungen und Macros, die zum Editieren sehr häufig benötigt werden: - die Anwender-Macros, - die Default Settings (mit 'S'et Kommando veränderbar) und - einige Einstellungen wie Bildschirm-Abmessungen und -Farben. Beim Aufruf des Editors wird dieser File default-mässig geladen. Somit stehen alle darin enthaltenen Macros und Einstellungen automatisch zur Verfügung. Folgende Einträge sind erlaubt: - Kommentare ( \* ... *\ , nicht etwa /* ... */ ) - Include Files (Syntax: "INCLUDE macrofilename", exakt ein <space> !) - Macros (erkannt am 'M' in der 1. Spalte) - die implementierten Set Options ('S' in der 1. Spalte) Beispiel: SBN \* Set Bak_files NO *\ - die Farb-Attribute für VGA oder VT100/ANSI (siehe auch Anhang !) AFNV=1B4DF0; or AFNV=="?[0;30;48m" \* Normal Video *\ AFRV=1B4D0F; or AFRV=="?[7;30;48m" \* Reverse Video *\ AF1V=1B4D30; or AF1V=="?[0;30;46m" \* Status Line 1 *\ AF2V=1B4D4F; or AF2V=="?[0;38;41m" \* Status Line 2 *\ AFCV=1B4DF2; or AFCV=="?[0;32;48m" \* Comments *\ AFKV=1B4DF1; or AFKV=="?[0;34;48m" \* Keywords *\ AFSV=1B4DF4; or AFKV=="?[0;31;48m" \* Strings *\ Bei VGA wird nur das letzte Byte ausgewertet, z.B.: Normal Video 1f: Hintergrundfarbe = 1 (blau) und Vordergrundfarbe = f (weiss). Bei VT100/ANSI wird die komplette <esc>-Sequenz vorgegeben. '?' bedeutet <esc>, also 0x1b. - die Bildschirmgröße (ACHTUNG ! keine Blanks '='), und sonstige Parameter AV= 25 \* Anzahl Zeilen *\ AC= 80 \* Anzahl Spalten *\ AG= 1 \* Semi-Grafik: 0=OFF, 1=VGA/VT100, 2=ANSI *\ AM= 1 \* Maus-Treiber EIN *\ AS= 1 \* Automatisches Schieben des Bildschirms mit dem Cursor *\ AE=200 \* Wartezeit für <esc>-Sequenzen in msec *\ Die Zeilenzahl sollte <= Bildschirm-Höhe sein, größere Angaben machen keinen Sinn. Die Spaltenzahl kann bei VT100-Mode <= aktueller Bildschirmbreite sein, im VGA-Mode muß sie der aktuellen Einstellung entsprechen, sonst gibt's Müll auf dem Monitor. Die Angaben AV und AC sind dazu da, dem Editor die Bildschirm- größe mitzuteilen und nicht, ihm eine falsche vorzugaukeln. Mit mbedit wird ein Macro-File mit einigen nützlichen Macros und Vorein- stellungen mitgeliefert. Jeder Anwender kann diesen File nach seinen eigenen Anforderungen verändern.

9.5. Macro Typen

mbedit unterscheidet zwischen zwei verschiedenen Macro-Typen: - modeless macros sind erkennbar an der Ende-Sequenz "\MM;" Der Macro kann aus jedem Mode aufgerufen werden (Command, Insert oder Exchange Mode). Nach Ablauf des Macros befindet sich der Editor im selben Mode wie vorher. - non-modeless macros sind erkennbar an der Ende-Sequenz "\EM;" Wenn im Verlauf der Macro-Abarbeitung der Mode geändert wird, so bleibt der neue Mode nach Beendigung des Macros erhalten. Die mit 'M'acro 'C'reate erzeugten Macros sind zunächst immer vom Typ modeless. Bei Bedarf muß der Typ im Macro-File umeditiert werden.

9.6. Der Macro "INIT"

Existiert in dem Macro-File ein Macro namens "INIT", so wird dieser Macro automatisch ausgeführt. Von hier aus lassen sich wiederum andere Macros starten. Bestimmte Kommandos können hiermit beim Aufruf des Editors jedesmal durchgeführt werden, ohne daß dazu ein Tastendruck notwendig wäre.

9.7. Der Macro "EXIT"

Entsprechend: Existiert in dem Macro-File ein Macro namens "EXIT", so wird dieser Macro automatisch vor dem Ende von mbedit ausgeführt. Von hier aus lassen sich wiederum andere Macros starten. Bestimmte Kommandos können hiermit beim Verlassen des Editors jedesmal durchgeführt werden, ohne daß dazu ein Tastendruck notwendig wäre.