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.