\section{Der Editor}

Beim Editor {\bf m2emacs} handelt es sich um einen
bildschirmorientierten Zeileneditor. Ein mit {\tt m2emacs}
bearbeiteter Text besteht aus einer Anzahl verschiedener
Textzeilen mit einer L"ange von bis zu 255 Zeichen.
Jedes Zeichen kann sich "uber den gesamten 8-Bit
Bereich erstrecken, beinhaltet insbesondere alle
nationalen Sonderzeichen, wie in \cite{AmigaDOS} vermerkt.

Auf jeder Zeile sind nur eine begrenzte Anzahl
Zeichen sichtbar, typischerweise 80 im Normalmodus,
88 mit Overscan der Betriebssystemversion 2.0.
Maximal sind im SuperHires-Modus\footnote{Super High Resolution Modus}
mit Overscan 176 Zeichen darstellbar.
Sobald der Cursor nahe an den rechten Rand kommt,
wird der Text um 16 Stellen nach links verschoben.
Auf der linken Seite wird dann zur"uckverschoben,
sobald sich der Cursor im linken Drittel befindet.
Die Anzahl der
angezeigten Zeilen ist abh"angig von der Zeilenzahl des
Bildschirm und des Anzeige-Modus. Dies sind mindestens
22~Zeilen bei NTSC\footnote{Akronym f"ur National
Television System Committee, das in den USA "ubliche
Farbfernsehsystem.}-Norm und Normalmodus bis zu h"ochstens
67~Zeilen bei PAL\footnote{Akronym f"ur Phase Alternation
Line, das von den meisten westeurop"aischen Staaten
angenommene Farbfernsehsystem.}-Norm, Interlace-Modus und Overscan.

Der Editor {\tt m2emacs} bietet die M"oglichkeit mehrere Dateien
gleichzeitig zu bearbeiten. Die Anzahl der Dateien ist nur
durch die Gr"osse des verf"ugbaren Hauptspeichers begrenzt,
da {\tt m2emacs} ausschliesslich im Hauptspeicher arbeitet.

Mit {\tt m2emacs} k"onnen Sie auch die Maus als Eingabeger"at
benutzen. Nebst der "ublichen Menuauswahl k"onnen sie den
Cursor und Marken setzen und einfach Textteile l"oschen.
Die detaillierte Beschreibung findet sich im Abschnitt
\ref{EdMouseIn} auf Seite \pageref{EdMouseIn}.

\subsection{Spezielle Terminologie}

Editoren zeigen meist eine eigene Welt innerhalb des
gesamten Systems. Kaum ein Betriebssystem
begn"ugt sich mit einem einzigen Editor, und die
verschiedenen Editoren unterscheiden sich in der
Handhabung doch betr"achtlich. So ist auch nicht
verwunderlich, dass wir hier eine eigene Terminologie
einf"uhren und einige Begriffe n"aher
erl"autern m"ussen.

\begin{description}
\item[Textspeicher:]
  bezeichnet einen Speicherbereich, der von {\tt m2emacs} verwaltet
  wird. Es existiert immer mindestens ein Textspeicher, der
  aber auch leer sein kann. Jede Datei, die aktuell bearbeitet
  wird, belegt genau einen Textspeicher.
\item[Cursor:]
  bezeichnet die Stelle im Text, an der "Anderungen stattfinden.
  Die Position des Cursors kann beliebig im Text ver"andert
  werden. Der Cursor ist mit einem
  Rechteck der "`Preferences"'-Einstellung Farbe Nr.~3 
  gekennzeichnet.
\item[Marke:]
  ist wie der Cursor eine ausgezeichnete Stelle im Textspeicher.
  Sie kann "uberall und jederzeit gesetzt werden. Die Marke ist
  nicht sichtbar, aber deren Position wird von {\tt m2emacs} vermerkt.
\item[Bereich:]
  bezeichnet den Textteil zwischen Cursor und Marke, wobei die
  Marke, nicht aber der Cursor, dazugeh"ort. Einige Operationen
  wirken direkt auf den Bereich.
\item[Fenster:]
  in {\tt m2emacs} entsprechen nicht den Fenstern, wie sie von
  Intuition verwaltet werden. Stattdessen erlaubt {\tt m2emacs}
  eine horizontale Unterteilung des Bildschirms in Fenster,
  die alle die gesamte Bildschirmbreite einnehmen. Jedes
  dieser Fenster erlaubt es Ihnen, eine andere Datei zu bearbeiten.
\item[Textname:]
  ist einer von zwei Namen, die einem Textspeicher zugeordnet sind.
  Der erste ist der Textname, mit dem ein Textspeicher identifiziert
  und angesprochen werden kann. Der zweite Name ist der Dateiname
  der Datei, die sich im Textspeicher befindet.

  Normalerweise entspricht der Textname dem Dateinamen, welchem
  der Pfad entfernt wurde. Ruft man den Editor ohne Dateiangabe
  auf, erh"alt der Textspeicher den Textnamen "`main"', englisch
  f"ur die Vorsilbe Haupt-. Der zugeh"orige Dateiname wird
  zun"achst "ubernommen,
  kann aber auch nachtr"aglich durch einige Befehle ver"andert werden.
\item[Statuszeile:]
  ist die unterste Zeile des Bildschirms. Alle Editorbefehle,
  die zus"atzliche Angaben ben"otigen, fragen diese auf der
  Statuszeile ab. Bei Eingaben auf der Statuszeile kann "ubrigens
  nicht nur das letzte Zeichen mit \keybs, sondern die ganze
  Zeile mit \keyctrl[X] gel"oscht werden. Haben Sie den Befehl
  irrt"umlich aufgerufen, k"onnen Sie ihn mit \keyctrl[G] ganz
  abbrechen. Dann wird keine Operation ausgef"uhrt, und der Cursor
  nimmt wieder seinen alten Platz ein.
  
  Die Statuszeile dient ebenfalls der Anzeige von Fehler-
  und Infor\-ma\-tions-Meldungen. So ist die Meldung {\tt ok}
  auf der Statuszeile ein Hinweis, dass die letzte Operation
  fehlerfrei durchgef"uhrt wurde.
  
  Beim Lesen und Schreiben von Dateien sowie beim L"oschen
  von Text\-spei\-chern wird in der Statuszeile
  laufend die aktuelle Zeilennummer in 50-er-Schritten
  angegeben. Das gibt dem Benutzer eine Reaktion auf seine
  Befehle und erm"oglicht eine Kontrolle der Befehlsausf"uhrung.
\item[File-Requester:]
  ist eine komfortablere Form, Datei-Parameter einzulesen.
  Ein File-Requester verlangt immer einen Dateinamen. Ausserdem
  bietet er die M"oglichkeit, sich einen "Uberblick "uber
  die bereits vorhanden Dateien zu verschaffen. Sie k"onnen
  w"ahlen, ob sie Dateiparameter "uber die Statuszeile oder
  mittels eines File-Requesters eingeben wollen. Die
  Bedienung des File-Requesters ist gesondert im Abschnitt
  \ref{EdFileReq} beschrieben. 
\end{description}

\subsection{Aufruf und Bedienung}

\begin{quote}\tt
m2emacs \{+-bcdilr -g\cmsltt Directory\/\tt\ -p\cmsltt Project\/\tt\
-t\cmsltt Tabwidth\/\tt\} \\
~~[\cmsltt File\/\tt]
\end{quote}

%\subsubsection{Grundlegendes}

Der Editor {\tt m2emacs} kennt zwei verschiedene Operations-Modi,
den {\bf Normalmodus} und den {\bf Befehlsmodus}. Der Editor
befindet sich immer dann im Normalmodus, wenn {\em kein\/}
Befehl ausgef"uhrt wird. Nachdem ein Befehl abgeschlossen ist,
kehrt {\tt m2emacs} wieder in den Normalmodus zur"uck.

Der Normalmodus zeichnet sich folgendermassen aus:
\begin{itemize}
\item
  Zeichen, die in den laufenden Text eingef"ugt werden sollen,
  brauchen nur getippt zu werden. Der Normalmodus ist immer
  auch {\bf Einf"ugemodus}. Sie k"onnen alle Zeichen einf"ugen,
  also auch mit \keyret\ einen Zeilenumbruch erzeugen.
\item
  Das Zeichen unter dem Cursor kann mit der \keydel-Taste,
  dasjenige unmittelbar vor dem Cursor mit der \keybs-Taste
  gel"oscht werden. Alle nachfolgenden Zeichen r"ucken
  entsprechend nach.
\item
  Den Cursor k"onnen Sie mit den Pfeiltasten buchstaben-, beziehungsweise
  zeilenweise bewegen. Der Cursor kann weder hinter das Zeilenende
  bewegt werden, noch ist es m"oglich, den Cursor "uber die
  letzte Zeile des Textes hinaus zu positionieren. Man sagt
  auch, der Cursor sei {\bf gebunden}.
\item
  Der Cursor kann zudem schnell und einfach "uber gr"ossere
  Strecken verschoben werden. So bewirkt das Dr"ucken der 
  \keyalt-Taste gleichzeitig mit einer Pfeiltaste das
  Verschieben an den Anfang oder Ende eines Wortes
  (\keyaltleft\ und \keyaltright),
  oder das Bl"attern um eine Seite vor oder
  zur"uck (\keyaltdown\ und \keyaltup). Die \keyshift-Taste
  vergr"ossert den Schritt auf den Anfang oder das Ende der Zeile
  (\keyshiftleft\ und \keyshiftright), beziehungsweise
  an den Anfang oder das Ende des Text\-spei\-chers (\keyshiftup\
  und \keyshiftdown).
\item
  Schliesslich k"onnen Sie den Cursor auch mit der Maus
  positionieren. Dazu klicken Sie einfach den {\em linken\/}
  Mausknopf, nachdem Sie den Mauszeiger an die gew"unschte Stelle
  gebracht haben.
\item
  Die verschiedenen Funktionen des Editors k"onnen entweder
  durch Tastenkombinationen --- Kontroll- und Escape-Sequenzen ---
  oder durch eine Menuauswahl ausgef"uhrt werden. Diese Funktionen
  sind im folgenden ausf"uhrlich beschrieben.
\end{itemize}

In den Befehlsmodus wird durch viele dieser weiteren Funktionen
verzweigt. Im Befehlsmodus springt der Cursor auf die unterste
Zeile des Bildschirms und verlangt die Eingabe weiterer Informationen
und Parameter. Die Art der ben"otigten Information ist f"ur jede 
Funktion erkl"art. Ist der Befehl beendet, kehrt {\tt m2emacs} wieder in den
Normalmodus zur"uck.

Die unterste Zeile jedes Fensters ist die {\bf Begrenzungszeile}.
Sie ist durch eine invertierte Darstellung hervorgehoben.
Auf der Begrenzungszeile sind Statusangaben zu finden, diese sind
jedoch nur f"ur den in diesem Fenster sichtbaren Textspeicher von
Bedeutung. Die Begrenzungszeile besteht aus einer Zeile von
Bindestrichen, durchbrochen vom Programmnamen {\tt m2emacs}.
Daneben steht der Textname und schliesslich ist der dem
Textspeicher zugeordnete Dateiname vermerkt. 

In der ersten Spalte der Begrenzungszeile
erscheint ein "`\verb'<'"'-Zeichen,
wenn der Text verschoben ist, d.h.\ das auf der
aktuellen Zeile erste dargestellte Zeichen {\em nicht\/} das
erste Zeichen dieser Zeile ist. Dies kann also nur bei
"uberlangen Zeilen vorkommen. In der zweiten Spalte
wird auch markiert, ob der Textspeicher ver"andert wurde. Ein
Stern bedeutet einen ver"anderten Textspeicher, das urspr"ungliche
Minuszeichen heisst, dass Datei und Textspeicher identisch sind.

Hier ist ein Beispiel einer solchen Begrenzungszeile:
\nopagebreak
\begin{quote} \tt
-* m2emacs -- m2c.mod -- Datei: m2c.mod ---- $\cdots$ ---
\end{quote}


\subsubsection{Der File-Requester}

\label{EdFileReq}
Immer wenn ein Dateiname verlangt ist, erscheint ein File-Requester.
Dabei spielt es keine Rolle, ob Sie Dateien lesen oder schreiben
wollen. Einzig auf Ihren Wunsch unterbleibt der File-Requester
($\rightarrow$ Seite \pageref{EdOptR}).

Der obere Teil zeigt alle Dateien, die den
vorgegebenen Werten entsprechen. 
Im mittleren Teil sind drei Eintr"age zu finden:
{\tt Pattern}, {\tt Drawer}, {\tt File}.
Zuunterst sind vier
{\bf Gadgets} zu finden, die auf Mausklicken an\-spre\-chen.%
\footnote{F"uer AmigaDOS 1.3 wird ein eigener Requester
mit einer leicht anderen Anordnung verwendet.}

W"ahrend der Manipulation mit
dem File-Requester befindet man sich immer in einem Verzeichnis,
das nicht mit dem aktuellen Verzeichnis "uber"-ein\-stimmen muss.
Das Verzeichnis ist entweder relativ zum aktuellen oder darf
auch einen Ger"atenamen enthalten.
\begin{ttscript}{/oldsrc/txt}
\item[/oldsrc/txt]
  ist ein relativer Pfadname, und
\item[M2:Modules]
  enth"alt einen Ger"atenamen; darum ist er vom aktuellen
  Verzeichnis unabh"angig.
\end{ttscript}

Der Eintrag {\tt File} enth"alt den gew"unschten Dateinamen.
Nach dem Aufruf des File-Requesters ist meist ein Vorgabewert
gegeben, der durch \keyret\ best"atigt werden kann.

Schliesslich gibt {\tt Pattern} ein Suchmuster vor, nach
welchem die Dateien des Verzeichnisses angezeigt werden.
Die Vorbelegung ist
{\tt \#?}, was unter AmigaDOS {\em jeder\/} Datei entspricht.
Beim Verzeichnis handelt es sich {\em nicht\/} um das aktuelle
des Editors, sondern um ein f"ur den File-Requester spezifisches.
Dieses ist im mittleren Teil angegeben.

Die Anzeige der Dateien im Verzeichnis kann auf verschiedene
Arten initiiert werden:
\begin{itemize}
\item
  Bei "Anderung des Dateinamens --- wie nat"urlich beim
  Einstieg selbst --- wird das entsprechende Verzeichnis
  unmittelbar angezeigt.\footnote{Bei AmigaDOS 1.3
  m"ussen Sie
  mit der Maus im mittleren, leeren Anzeigeteil klicken.}
  Dabei erscheinen nur
  die Dateien, die dem Suchmuster entsprechen.
  Die Anzeige ist alphabetisch sortiert, wobei alle
  Verzeichnisse {\em nach\/} den ordentlichen Dateien stehen.
\item
  Ist in diesem Anzeigeteil ein Verzeichnis vorhanden,
  kann durch ein Klicken dieses Verzeichnisses in
  dasselbe gewechselt werden. Ist die ASL-Library {\em nicht\/}
  vorhanden, muss doppelgeklickt werden. Die Anzeige des Verzeichnisses
  wechselt entsprechend.
\item
  Klicken Sie das Gadget {\tt Disk} an, erscheinen alle
  Ger"ate und {\bf logischen Ger"atenamen}, letztere durch
  das AmigaDOS-Kommando {\tt ASSIGN} erzeugt. Logische
  Namen sind etwa {\tt C:}, {\tt S:} und {\tt M2:}.
\item
  Klicken Sie {\tt Parent} an, wechseln sie in das
  Vater-Verzeichnis, das ebenfalls sofort angezeigt wird.
\end{itemize}

Die Arbeit mit dem File-Requester beenden Sie durch Klicken
auf einem der Gadgets {\tt OK} oder {\tt CANCEL} oder durch
Doppelklicken auf einem Datei\-namen. Mit {\tt OK}
wird die zuvor gew"ahlte Funktion mit dem gew"unschten Namen
ausgef"uhrt, {\tt CANCEL} setzt den Cursor wieder an seinen
alten Ort und ver"andert keine weiteren Parameter.


\subsubsection{Das Arbeiten mit der Maus}

\label{EdMouseIn}
\subsubsection{Setze Cursor}

\begin{m2esyntax}
\item
  linker Mausknopf
\end{m2esyntax}

Den Cursor k"onnen Sie statt mit den Pfeiltasten auch
schneller mit der Maus bewegen. Um an die gew"unschte Textstelle zu
gelangen, muss man den Mauszeiger an die Stelle bewegen
und dort den {\em linken\/} Mausknopf dr"ucken. Damit
aktivieren Sie "uberdies das entsprechende Fenster.

\subsubsection{Setze Marke}

\begin{m2esyntax}
\item
  rechter Mausknopf
\end{m2esyntax}

Die Marke kann ebenso mit der Maus gesetzt werden. Ist der
Mauszeiger an der gew"unschten Markenposition, muss der
{\em rechte\/} Mausknopf gedr"uckt werden. Gleichzeitig setzen Sie mit
diesem Befehl den Cursor an diese Stelle.

\subsubsection{Bl\protect"attern}

\begin{m2esyntax}
\item
  linker / rechter Mausknopf
\end{m2esyntax}

Dr"uckt man den linken, beziehungsweise den rechten Mausknopf
in der Fenster-Begrenzungszeile, bl"attert {\tt m2emacs} den Text eine
Seite vor oder zur"uck.

\subsubsection{Ausschneiden}

\begin{m2esyntax}
\item
  linker und rechter Mausknopf
\end{m2esyntax}

Eines Bereich ausschneiden k"onnen Sie "ahnlich einfach
nur mit der Maus
ausf"uhren. Die genaue Vorgehensweise ist auf Seite
\pageref{EdCut} beschrieben.


\subsubsection{Einlesen und Abspeichern von Dateien}

\subsubsection{\protect"Offne Datei}

\begin{m2esyntax}
\item
  Projekt-Menu
\item
  \mbox{\keyctrl[X]\keyctrl[R]}
\item
  \mbox{\keyf1}
\end{m2esyntax}

"`"Offne Datei"' liest den Inhalt einer Datei in den
aktuellen Textspeicher.
Ist dieser leer oder gesichert, wird sofort ein Dateiname
verlangt und die angegebene Datei eingelesen. Die geschieht
entweder auf der Statuszeile oder mit einem File-Requester.
Der Dateiname darf auch einen Pfad beinhalten.
Ist der Textspeicher ge"andert --- gekennzeichnet durch
den Stern in der Begrenzungszeile --- versichert sich
{\tt m2emacs}, ob der ungesicherte Textspeicher wirklich "uberschrieben
werden soll. Beantworten Sie die Frage
\begin{quote} \tt
"Anderungen vergessen [j/n]?
\end{quote}
mit "`{\tt j}"', wird der Textspeicher
"uberschrieben\footnote{Wegen der internen
Speicherdarstellung kann dieses L"oschen einige Sekunden
dauern}, mittels
"`{\tt n}"' wird der Aufruf des "Offnen-Befehls ignoriert.

Wenn Sie den Befehl auf der Statuszeile abbrechen wollen
--- der File-Requester kennt ja den Abbruch-Befehl ---,
geben Sie einfach einen {\em leeren\/} Dateinamen an, und {\tt m2emacs}
kehrt in den Normalmodus an die alte Stelle zur"uck.

\subsubsection{Lies Datei}

\begin{m2esyntax}
\item
  Projekt-Menu
\item
  \mbox{\keyctrl[X]\keyctrl[V]}
\end{m2esyntax}

Dieser Befehl ruft einen neuen Textspeicher ins Leben. Dieser
Befehl l"asst sich so umschreiben: "`Ich m"ochte eine andere
Datei bearbeiten, w"ahrenddem ich diese Datei bearbeite"'.
Dieser Befehl ist vor allem n"utzlich, um aus verschiedenen
Programmen Teile auszusondern oder um Definitionsmoduln
zu konsultieren.

Falls der eingegebene Dateiname nicht bereits einem Textspeicher
zugeornet ist und die Datei existiert, wird ein neuer Textspeicher
kreiert und sofort auf dem Bildschirm angezeigt. Der alte
Textspeicher ist noch vorhanden, und Sie k"onnen jederzeit auf
ihn zugreifen. Ist die angegebene Datei bereits ge"offnet oder
gelesen, wird kein neuer Textspeicher erzeugt. Stattdessen wird
auf den Textspeicher, dem diese Datei zugeordnet ist, umgeschaltet.

Wie Sie die Liste aller Textspeicher anzeigen, ist in diesem Abschnitt
auf Seite \pageref{EdShowBuf} beschrieben.


\subsubsection{F\protect"uge Datei ein}

\begin{m2esyntax}
\item
  Projekt-Menu
\item
  \mbox{\keyctrl[X]\keyctrl[I]}
\end{m2esyntax}

Diese Funktion f"ugt die gew"ahlte Datei vor der aktuellen Zeile
ein. Die Position des Cursors auf dieser Zeile wird dabei
nicht ber"ucksichtigt.


\subsubsection{Sichern}

\begin{m2esyntax}
\item
  Projekt-Menu
\item
  \mbox{\keyctrl[X]\keyctrl[S]}
\item
  \mbox{\kkey[Shift/F1]}
\end{m2esyntax}

Mit "`Sichern"' schreiben Sie den Inhalt des aktuellen
Textspeichers auf diejenige
Datei, die durch den dem Textspeicher zugeh"origen Namen
identifiziert ist. Bestehende Datei-Attribute,
z.B. das script-Flag, sowie den mit {\tt filenote} zu erzeugenden
Dateikommentar bleiben unver"andert.

Ist dem Textspeicher kein Dateiname
zugeordnet, kann die Datei nicht geschrieben werden. Der
Dateiname wird durch das "Offnen oder das Umbenennen dem
Textspeicher zugeordnet.

Ist die Sicherung erfolgreich abgeschlossen, erscheint auf
der Statuszeile die Anzahl der geschriebenen Zeilen.

\subsubsection{Sichern als}

\begin{m2esyntax}
\item
  Projekt-Menu
\item
  \mbox{\keyctrl[X]\keyctrl[W]}
\end{m2esyntax}

"`Sichern als"' schreibt den Inhalt des aktuellen Textspeichers auf eine Datei
mit frei w"ahlbarem Namen. Dieser Dateiname wird neu dem Textspeicher
zugeordnet. F"ur das erneute Abspeichern gen"ugt somit der
Sichern-Befehl ohne Dateiname. Der Textspeicher ist wie beim Sichern
nicht mehr l"anger als ge"andert markiert, und der Stern auf
der Begrenzungszeile verschwindet.

\subsubsection{Neuer Dateiname}

\begin{m2esyntax}
\item
  Projekt-Menu
\item
  \mbox{\keyctrl[X]\keyctrl[F]}
\end{m2esyntax}

"`Neuer Dateiname"' "andert den Dateinamen des aktuellen
Textspeichers auf einen neuen
Namen. Die Angabe eines leeren Namens ist zwar m"oglich,
meist aber unsinnig. Ohne g"ultigen Dateinamen kann die Datei
nicht abgespeichert werden.

\subsubsection{Sichern \& Ende}

\begin{m2esyntax}
\item
  Projekt-Menu
\item
  \mbox{\keyctrl[Z]}
\end{m2esyntax}

"`Sichern \& Ende"' schreibt den Inhalt des aktuellen Textspeichers auf die
zugeordnete Datei und verl"asst {\tt m2emacs}. Existieren weitere
ver"anderte Textspeicher, wird gefragt, ob {\tt m2emacs} wirklich
verlassen werden soll.

\subsubsection{Ende}

\begin{m2esyntax}
\item
  Projekt-Menu
\item
  \mbox{\keyctrl[X]\keyctrl[C]}
\end{m2esyntax}

"`Ende"' verl"asst {\tt m2emacs}. Falls aber ver"anderte Textspeicher existieren
sollten, fragt {\tt m2emacs} zur Sicherheit, ob man den Editor wirklich
verlassen will. Dr"uckt  man "`{\tt j}"', ist die getane Arbeit
endg"ultig verloren, bricht man den Ende-Befehl aber mit "`{\tt n}"'
ab, befindet man sich wieder im Normal\-modus des Editors. Hier
kann dann "`Sichern"' aufgerufen werden.

\subsubsection{Benutze Textspeicher}

\begin{m2esyntax}
\item
  Projekt-Menu
\item
  \mbox{\keyctrl[X]\key{B}}
\end{m2esyntax}

Diese Funktion erm"oglicht das Wechseln des Textspeichers
im aktuellen Fenster. Es sind dann mehr Textspeicher als
Fenster vorhanden, wenn in einem Textspeicher, die
nur ein Fenster belegt, eine neue Datei eingelesen wird.

Im Menu sind alle vorhandenen Textspeicher in einem Untermenu
dargestellt. Ein Wechsel erfolgt durch die Auswahl des
entsprechenden Eintrags.

\subsubsection{L\protect"osche Textspeicher}

\begin{m2esyntax}
\item
  Projekt-Menu
\item
  \mbox{\keyctrl[X]\key{K}}
\end{m2esyntax}

Damit l"oschen Sie einen Textspeicher aus dem Speicher.
Wenn ein Textspeicher
nicht mehr ben"otigt wird, sollte er gel"oscht werden, damit
der von ihm belegte Speicherbereich wieder freigegeben werden kann.
Einen Textspeicher k"onnen Sie nur l"oschen, wenn er nicht am Bildschirm
sichtbar ist. Ein unver"anderter Textspeicher wird dann sofort
gel"oscht, sonst muss der Benutzer das L"oschen zur Sicherheit
nochmals best"atigen.

Besonders einfach ist das L"oschen mittels des Menus, da
alle vorhandenen Textspeicher im Untermenu aufgelistet sind.
Die Auswahl erfolgt mit der Wahl des entsprechenden Eintrags.

\subsubsection{Zeige Liste aller Textspeicher}

\label{EdShowBuf}
\begin{m2esyntax}
\item
  \mbox{\keyctrl[X]\keyctrl[B]}
\end{m2esyntax}

Informationen "uber alle Textspeicher erhalten Sie mit
diesem Befehl. Daf"ur wird ein eigenes Fenster
er"offnet. Der Befehl gibt Auskunft "uber die
Gr"ossen der Textspeicher, die Textnamen und die
zugeh"origen Dateinamen. In der ersten Spalte wird mit
einem Stern ({\tt *}) angezeigt, ob der Textspeicher
ver"andert wurde.


\subsection{Editierfunktionen}

Buchstabenweises L"oschen funktioniert wie bereits beschrieben
mit den Tasten \keydel\ und \keybs. Daneben existieren auch
M"oglichkeiten des wort- und zeilenweisen L"oschens. Als Wort
gilt dabei jede Zeichenkette bestehend aus alphanumerischen
Zeichen ("`A"'--"`Z"', "`a"'--"`z"', "`0"'--"`9"') und allen
Zeichen, deren Ordinalwert gr"osser oder gleich 128 ist
(h"ochstwertiges Bit gesetzt). Die Umlaute sind demnach
den normalen Buchstaben gleichgesetzt.

\subsubsection{L\protect"osche vorhergehendes Wort}

\begin{m2esyntax}
\item
  \mbox{\keyesc\keybs}
\item
  \mbox{\kkey[Alt/BS]}
\end{m2esyntax}

L"oscht das Wort vor dem Cursor, falls sich dieser zwischen
zwei W"or\-tern befindet. Ist der Cursor mitten in einem Wort,
werden alle Zeichen dieses Worts gel"oscht, die sich vor dem
Cursor befinden.

\subsubsection{L\protect"osche Wort}

\begin{m2esyntax}
\item
  \mbox{\keyesc\key{D}}
\item
  \mbox{\kkey[Alt/Del]}
\end{m2esyntax}

L"oscht das Wort nach dem Cursor, falls sich dieser zwischen zwei
W"or"-tern befindet. Ist der Cursor mitten in einem Wort,
wird das Zeichen unmittelbar unter dem Cursor sowie alle
nachfolgenden Zeichen des Worts gel"oscht.

\subsubsection{L\protect"osche Zeile}

\begin{m2esyntax}
\item
  \mbox{\keyctrl[X]\keyctrl[K]}
\item
  \mbox{\keyctrl[X]\keydel}
\item
  \mbox{\keyf{10}}
\end{m2esyntax}

Dieser Befehl l"oscht die Zeile, auf der sich der Cursor
gerade befindet. Diese
Zeile wird in den sogenannten {\bf Zwischenspeicher} "ubertragen
und kann dort solange abgerufen werden, wie er nicht durch ein erneutes
L"oschen "uberschrieben wird. F"ur das Zur"uckholen des Zwischenspeichers
schaue man unter "`Einsetzen"' nach.

\subsubsection{L\protect"osche bis Ende Zeile}

\begin{m2esyntax}
\item
  \mbox{\keyctrl[K]}
\item
  \mbox{\kkey[Shift/Del]}
\end{m2esyntax}

L"oscht alle Zeichen dieser Zeile, die sich hinter dem Cursor befinden,
einschliesslich des unter dem Cursor liegenden Zeichens. Ist
die Zeile leer, d.h.\ befindet sich nur das Zeilenvorschubzeichen
("'line feed"') auf ihr, wird dieses gel"oscht. Der gel"oschte Text
wird in den Zwischenspeicher "ubertragen.

\subsubsection{L\protect"osche vom Beginn der Zeile}

\begin{m2esyntax}
\item
  \mbox{\kkey[Shift/BS]}
\end{m2esyntax}

L"oscht alle Zeichen der aktuellen Zeile, die sich vor dem
Cursor befinden. Der gel"oschte Text wird in den Zwischenspeicher
"ubertragen.

\subsubsection{F\protect"uge Zeilen zusammen}

\begin{m2esyntax}
\item
  \mbox{\keyctrl[X]\keyctrl[J]}
\end{m2esyntax}

"`F"uge Zeilen zusammen"' h"angt die nachfolgende Zeile an die
aktuelle Zeile an. Dies entspricht dem L"oschen des
Zeilenvorschub-Zeichens am Ende der Zeile. Die Cursorposition bleibt
erhalten.

\subsubsection{Setze Marke}

\begin{m2esyntax}
\item
  rechter Mausknopf
\item
  \mbox{\keyctrl[\verb'@']}
\item
  \mbox{\keyesc\key{.}}
\end{m2esyntax}

Hiermit setzen Sie die Marke an der momentanen Cursorposition.
Wird die Marke mit dem rechten Mausknopf gesetzt, muss der
Mauszeiger an der gew"unschten Stelle des Texts sein. Der
Cursor springt darauf an die Stelle der Marke. In jedem Fall
erscheint in der Statuszeile die Meldung "`{\tt Marke gesetzt}"'.

\subsubsection{Vertausche Cursor mit Marke}

\begin{m2esyntax}
\item
  \mbox{\keyctrl[X]\keyctrl[X]}
\end{m2esyntax}

Damit setzen Sie den Cursor an die Stelle der Marke bei
gleichzeitigem Verschieben der Marke an die alte
Cursorposition. Die Marke kann so als Merkpunkt eingesetzt
werden, zu dem Sie jederzeit wieder schnell zur"uckkehren
k"onnen.

\subsubsection{Ausschneiden}

\label{EdCut}
\begin{m2esyntax}
\item
  Edit-Menu
\item
  \mbox{\keyctrl[W]}
\item
  linker \& rechter Mausknopf
\end{m2esyntax}

"`Ausschneiden"' l"oscht den Bereich, d.h.\ den Text, der sich
zwischen und einschliesslich der Marke und der Cursorposition
befindet. Der gel"oschte Text wird in den Zwischenspeicher
"ubertragen.
 
Dieser Befehl kann auch nur mit der Maus ausgef"uhrt werden.
Dazu dr"ucke man den linken Mausknopf an der gew"unschten
Cursorposition, halte ihn gedr"uckt und dr"ucke nun den rechten
Mausknopf, den man sofort wieder losl"asst. Sobald auch der
linke Knopf wieder losgelassen wird, ist der Bereich gel"oscht
und in den Zwischenspeicher kopiert.

\subsubsection{Kopieren}

\begin{m2esyntax}
\item
  Edit-Menu
\item
  \mbox{\keyesc\key{W}}
\end{m2esyntax}

"`Kopieren"' "ubertr"agt den Bereich in den Zwischenspeicher,
l"asst den Textspeicher aber unver"andert. Es ist eine
Abk"urzung f"ur das Ausschneiden und sofortige, erneute
Einsetzen eines Bereichs.

\subsubsection{Einsetzen}

\begin{m2esyntax}
\item
  Edit-Menu
\item
  \mbox{\keyctrl[Y]}
\end{m2esyntax}

"`Einsetzen"' setzt den im Zwischenspeicher enthaltenen Text an
der aktuellen Cursorposition ein. Der Zwischenspeicher bleibt
bestehen und wird nicht ver"andert. Der Cursor steht neu
unmittelbar hinter dem letzten Zeichen des eingesetzten
Blocks; die Position der Marke bleibt indes unver"andert.

\subsubsection{Einsetzen auf Datei}

\begin{m2esyntax}
\item
  Edit-Menu
\item
  \mbox{\keyesc\key{Y}}
\end{m2esyntax}

Schreibt den im Zwischenspeicher enthaltenen Text auf eine
anzugebende Datei. Ist bereits eine Datei mit diesem Namen
vorhanden, wird diese ohne Warnung "uberschrieben.

\subsubsection{L"oschen}

\begin{m2esyntax}
\item
  Edit-Menu
\end{m2esyntax}

Dieser Befehl l"oscht den Bereich, {\em ohne\/} diesen in den
Zwischenspeicher zu "ubertragen.


\subsubsection{Suchen und Ersetzen eines Textes}

\subsubsection{Suchen}

\begin{m2esyntax}
\item
  Befehle-Menu
\item
  \mbox{\keyctrl[S]}
\item
  \mbox{\keyf3}
\end{m2esyntax}

"`Suchen"' sucht den angegeben Text im Textspeicher. Ab der
Cursorposition wird vorw"arts gesucht, also in Richtung
Ende des Textspeichers. Ist der Text im Textspeicher
vorhanden, springt der Cursor unmittelbar hinter den
gefundenen Text, anderenfalls erscheint die Meldung
"`{\tt Nicht gefunden}"'; diese steht nat"urlich auf der
Statuszeile.

\subsubsection{Suchen r\protect"uckw\protect"arts}

\begin{m2esyntax}
\item
  \mbox{\keyctrl[R]}
\end{m2esyntax}

Sucht den angegebenen Text im Textspeicher. Die Suchrichtung
ist r"uckw"arts, d.h.\ von der Cursorposition an in Richtung
Anfang des Textspeichers. Ist der Text im Textspeicher
vorhanden, springt der Cursor auf das erste Zeichen des
gefundenen Textes.

\subsubsection{Ersetzen}

\begin{m2esyntax}
\item
  Befehle-Menu
\item
  \mbox{\keyesc\key{\%}}
\item
  \mbox{\kkey[Shift/F3]}
\end{m2esyntax}

Verlangt zun"achst den Suchtext und danach die Angabe, durch welchen
Text dieser zu ersetzen ist. Dann sucht {\tt m2emacs} den angegebenen
Text im Textspeicher, wiederum beginnend mit der Cursorposition.
Wird der Text gefunden, springt der Cursor hinter den gefundenen
Text, und es erscheint die Meldung "`{\tt ersetzen?}"'. Die
Eingabe "`{\tt j}"' oder "`{\tt ~}"' ersetzt den Text und sucht
das n"achste Vorkommen des Ursprungtextes, "`{\tt n}"' und \keydel\
fahren ohne Ersetzung mit der Suche fort. Die Eingabe "`{\tt a}"'
l"asst alle weiteren Vorkommen des Ursprungtextes ohne Best"atigung
ersetzen. Wollen Sie keine weiteren Ersetzungen mehr vornehmen,
k"onnen Sie den Ersetzungsvorgang mit \keyctrl[G] abbrechen.

\subsubsection{\protect"Andern eines Textbereichs}

\subsubsection{Mache Kleinbuchstaben}

\begin{m2esyntax}
\item
  \mbox{\keyctrl[X]\keyctrl[L]}
\end{m2esyntax}

"`Mache Kleinbuchstaben"' ersetzt alle grossen Buchstaben des Bereichs
--- einschliesslich der Umlaute --- durch die entsprechenden
Kleinbuchstaben. Ziffern, Kleinbuchstaben und Sonderzeichen
bleiben unver"andert.

\subsubsection{Mache Grossbuchstaben}

\begin{m2esyntax}
\item
  \mbox{\keyctrl[X]\keyctrl[U]}
\end{m2esyntax}

"`Mache Grossbuchstaben"' ersetzt alle kleinen Buchstaben des Bereichs
--- einschliesslich der Umlaute --- durch die entsprechenden
Grossbuchstaben. Ziffern, Grossbuchstaben und Sonderzeichen
bleiben unver"andert. Dieser Befehl ist nicht die R"ucknahme
des Befehls "`Mache Kleinbuchstaben"'! Beide sind mit gr"osster
Sorgfalt anzuwenden, da sie nur m"uhsam von Hand r"uckg"angig
gemacht werden k"onnen.

\subsubsection{Mache Wort mit Kleinbuchstaben}

\begin{m2esyntax}
\item
  \mbox{\keyesc\key{L}}
\end{m2esyntax}

Ersetzt die Buchstaben des n"achsten Worts durch entsprechende
Kleinbuchstaben und r"uckt den Cursor an das Ende des Worts.
Gilt nur f"ur den Rest des Worts, falls sich der Cursor mitten
in einem Wort befindet.

\subsubsection{Mache Wort mit Grossbuchstaben}

\begin{m2esyntax}
\item
  \mbox{\keyesc\key{U}}
\end{m2esyntax}

Ersetzt die Buchstaben des Worts durch entsprechende
Grossbuchstaben. Ansonsten gleichbedeutend mit dem vorherigen
Befehl.

\subsubsection{Schreibe Wort gross}

\begin{m2esyntax}
\item
  \mbox{\keyesc\key{C}}
\end{m2esyntax}

Dieser Befehl ersetzt den Buchstaben unter dem Cursor durch
den entsprechenden Grossbuchstaben und der Rest des Worts
wird in Kleinbuchstaben verwandelt. Danach befindet sich
der Cursor hinter dem Wort. Stand der Cursor vor dem Aufruf
nicht in einem Wort, wird die Operation auf das nachfolgende
Wort ausgef"uhrt.

\subsubsection{Vertausche die letzten beiden Buchstaben}

\begin{m2esyntax}
\item
  \mbox{\keyctrl[T]}
\end{m2esyntax}

Damit vertauscht man den Buchstaben, der unmittelbar unter
dem Cursor steht, mit dem unmittelbar davorstehenden.
Dieser Befehl ist "ausserst n"utzlich f"ur den wohl
h"aufigsten Fall von Tippfehler --- wer schreibt schon
fhelerfrie? Dieser Befehl funktioniert {\em nicht} am Zeilenende
sowie am Zeilenbeginn, der Zeilenvorschub kann nicht vertauscht
werden.

\subsection{Optionen, Schalterstellungen}

Schalterstellungen beeinflussen die Funktionsweise einiger
Befehle. Schalter k"onnen nicht explizit an- oder abgestellt,
sondern nur umgestellt werden. Die gegenw"artige Schalterstellung
ist im Menu sichtbar. Ein gesetzter, aktivierter Schalter wird
durch ein spezielles Symbol ($\surd$), {\bf Checkmark} genannt, vor dem
jeweiligen Menueintrag angezeigt. Das Ver"andern einer
Schalterstellung hat keinen Einfluss auf einen bereits
bestehenden Textspeicherinhalt. 

Einzelne Schalterstellungen k"onnen explizit auf der
Befehlszeile ein- oder ausgeschaltet werden. Solche, die sich nicht
auf der Befehlszeile "andern lassen, sind beim Editorstart
automatisch gesetzt.

Die gew"unschte Vorgabeinstellung aller Optionen kann in
der Umgebungsvariable {\tt m2emacs} abgelegt werden.

\subsubsection{Automatisches Einr\protect"ucken}

\begin{m2esyntax}
\item
  Optionen-Menu
\item
  \mbox{\keyctrl[X]\key{I}}
\end{m2esyntax}

Dieser Schalter beeinflusst das Verhalten des Editors, wenn ein
Zeilenumbruch eingef"ugt wird. Ist der Schalter gesetzt, beginnt
die neue Zeile mit gleich vielen Leer- und Tabulatorzeichen wie
die "uber ihr liegende Zeile. So f"allt ein grosser Teil des sich
auszahlenden Einr"uckaufwands weg. Ist der Schalter nicht gesetzt,
beginnt jede neue Zeile in der ersten Spalte.

\subsubsection{Gross/Klein}

\begin{m2esyntax}
\item
  Optionen-Menu
\item
  \mbox{\keyctrl[X]\key{C}}
\end{m2esyntax}

Dieser Schalter ist nur bei Suchvorg"angen und Ersetzungen
von Bedeutung. Ist der Schalter gesetzt, wird zwischen
Gross- und Kleinbuchstaben unterschieden. Diese Unterscheidung
gilt auch f"ur alle Umlaute.

\subsubsection{Erzeuge Ikone}

\label{EdOptI}
\begin{m2esyntax}
\item
  Befehlszeile, Option i, Vorgabe +i
\item
  Optionen Menu
\item
  \mbox{\keyctrl[X]\key{W}}
\end{m2esyntax}

Dieser Schalter gibt an, ob beim Sichern einer Datei
auch eine Ikone erzeugt werden soll oder nicht. Der gesetzte
Schalter erzeugt nur dann eine Ikone, falls
nochl keine Ikone existiert. 

\subsubsection{Behalte Backup}

\label{EdOptB}
\begin{m2esyntax}
\item
  Befehlszeile, Option b, Vorgabe +b
\item
  Optionen-Menu
\item
  \mbox{\keyctrl[X]\key{S}}
\end{m2esyntax}

Ist dieser Schalter gesetzt, legt {\tt m2emacs} beim Zur"uck- und
"Uberschreiben einer Datei eine Sicherheitskopie an. Diese
Sicherheitskopie hat den Namen der "uberschriebenen
Datei, erweitert um den Buchstaben "`{\tt O}"'. Vor allem
Besitzer einer Festplatte k"onnen diesen Schalter setzen,
um auch die zuweilen wertvolle zweitletzte Version greifbar
zu haben.\footnote{Laut Murphy (siehe \cite{compMurphy}) befindet
sich beim Vorhandensein einer zweitletzten Version die 
ben"otigte Information in der drittletzten Version}
F"ur Diskettenbenutzer ist der Platzbedarf f"ur
alte Versionen meist nicht vorhanden, weshalb diese den Schalter
ausschalten sollten.

\subsubsection{S\protect"aubere Zeilen}

\label{EdOptC}
\begin{m2esyntax}
\item
  Befehlszeile, Option c, Vorgabe +c
\item
  Optionen-Menu
\item
  \mbox{\keyctrl[X]\key{T}}
\end{m2esyntax}

Ist der Schalter "`S"aubere Zeilen"' aktiv, werden alle
Leerzeichen am Ende einer Zeile gel"oscht, nachdem der Cursor sie
verlassen hat. Es spielt keine Rolle, wie die Zeile verlassen
wurde; auch das Abschliessen der Zeile mit \keyret\ gilt als
Verlassen.

\subsubsection{File-Requester}

\label{EdOptR}
\begin{m2esyntax}
\item
  Befehlszeile, Option r, Vorgabe -r
\item
  Optionen-Menu
\item
  \mbox{\keyctrl[X]\key{R}}
\end{m2esyntax}

Dieser Schalter bestimmt, ob bei den
Dateioperationen wie Lesen und Schreiben einer Datei
ein File-Requester erscheinen soll oder nicht.

\subsubsection{Zeige Tabs}

\begin{m2esyntax}
\item
  Befehlszeile, Option d, Vorgabe -d
\item
  Optionen-Menu
\item
  \mbox{\keyctrl[X]\keyctrl[T]}
\end{m2esyntax}

Dieser Schalter entscheidet "uber die Darstellung der
Tabulatorzeichen. Ist er gesetzt, werden Tabulatoren als
"`$\gg$"' dargestellt, selbstverst"andlich gefolgt vom
n"otigen, sich durch die n"achste Tabulatorposition ergebenden
Abstand.

\subsubsection{Interlace}

\begin{m2esyntax}
\item
  Befehlszeile, Option l, Vorgabe -l
\item
  Optionen-Menu
\end{m2esyntax}

Hiermit wird schliesslich der Anzeigemodus gew"ahlt.
Bei einem Wechsel wird der aktuelle Bildschirm geschlossen
und durch einen neuen mit den angepassten Eigenschaften ersetzt.
S"amtliche Fensterverh"altnisse werden ebenfalls korrekt auf den neuen
Modus angepasst. Im Interlace-Modus kann ein Fenster nicht kleiner
als zwei Zeilen gross gemacht werden. Dies stellt sicher,
dass ein Wechsel zum Normalmodus immer m"oglich ist.

\subsubsection{Startverzeichnis}

\begin{m2esyntax}
\item
  Befehlszeile, Option {\tt g\cmsltt Directory}
\end{m2esyntax}

Wechselt das Verzeichnis, auf welchem {\tt m2emacs} arbeitet. Diese
Option ist gleichbedeutend mit einen Aufruf des Befehls
"`Wechsle Verzeichnis"' unmittelbar nach Aufstarten des Editors.
Wird beim Aufruf auch ein Dateiname angegeben, wird die Datei
sowie die zugeh"orige Fehlerdatei aus diesem Verzeichnis geladen.

\subsubsection{Ohmprojekt}

\begin{m2esyntax}
\item
  Befehlszeile, Option {\tt p\cmsltt Project}
\end{m2esyntax}

Das Argument dieser Option gibt das von Ohm\footnote{Online Help Manual}
zu verwendende Projekt an. Ohne Angabe wird das Projekt
"`M2Amiga"' verwendet.

\subsubsection{Tabulatorweite}

\begin{m2esyntax}
\item
  Befehlszeile, Option {\tt t\cmsltt TabWidth}
\end{m2esyntax}

Hiermit kann die Tabulatorweite gesetzt werden. Der Vorgabewert
ist 0, dann wird jedes eingegebene Tabulatorzeichen als solches
in den Text eingef"ugt. Alle anderen Weiten werden durch das
Einsetzen von Leerzeichen erreicht.

Eine komplette Aufstellung aller Aufruf-Optionen befindet sich in
Tabelle \ref{EditOpts}.

\begin{table}
\begin{center}
\begin{tabular}{|c|l|l|l|} \hline
Option & Argument & Vorgabe & Wirkung \\ \hline\hline
b & & + & behalte Backup \\ \hline
c & & + & s"aubere Zeilen \\ \hline
d & & - & zeige Tabulatoren \\ \hline
g & Verzeichnis & & wechsle Verzeichnis \\ \hline
i & & + & Erzeuge Ikone \\ \hline
l & & - & Interlace Modus \\ \hline
p & Ohmprojekt & M2Amiga & Setze Ohmprojekt \\ \hline
r & & + & File-Requester \\ \hline
t & Tabulatorweite & 0 & setze Tabulatorweite \\ \hline
\end{tabular}
\end{center}
\caption{\label{EditOpts}Aufruf-Optionen des Editors}
\end{table}

\subsection{Sonstige Funktionen}

\subsubsection{Erneuere Bildschirminhalt}

\begin{m2esyntax}
\item
  \mbox{\keyctrl[L]}
\end{m2esyntax}
			
Schreibt die ganze Seite neu.

\subsubsection{Verschiebe Text nach oben}

\begin{m2esyntax}
\item
  \mbox{\keyctrl[X]\keyctrl[N]}
\item
  \mbox{\keyf9}
\end{m2esyntax}

Damit schieben Sie den Text im Fenster um eine Zeile nach oben,
d.h.\ die oberste Zeile verschwindet und eine neue Zeile wird sichtbar.
Ist der Cursor vor der Bewegung auf der obersten Bildschirmzeile,
wird er nachher wieder frisch zentriert.

\subsubsection{Verschiebe Text nach unten}

\begin{m2esyntax}
\item
  \mbox{\keyctrl[X]\keyctrl[P]}
\item
  \mbox{\kkey[Shift/F9]}
\end{m2esyntax}

Schiebt den Text im Fenster um eine Zeile nach unten.
Sonst funktioniert der Befehl analog zum vorhergehenden.

\subsubsection{Setze aktuelle Zeile an Fensteranfang}

\begin{m2esyntax}
\item
  \mbox{\keyesc\key{H}}
\item
  \mbox{\keyesc\key{!}}
\end{m2esyntax}

Dieser Befehl verschiebt den Text, so dass sich die aktuelle Zeile
danach am oberen Fensterrand befindet. Dabei bleibt die Cursorposition
innerhalb des Textspeichers unver"andert.

\subsubsection{Gehe zur Zeile}

\begin{m2esyntax}
\item
  \mbox{\keyesc\key{M}}
\item
  \mbox{\kkey[Shift/F6]}
\end{m2esyntax}

Damit l"asst sich der Cursor direkt auf eine absolut angegebene
Zeile positionieren.
Die erste Zeile des Textspeichers ist die Zeile 1.

\subsubsection{Teile Fenster}

\begin{m2esyntax}
\item
  Befehle-Menu
\item
  \mbox{\keyctrl[X]\key{2}}
\item
  \mbox{\keyf7}
\end{m2esyntax}

"`Teile Fenster"' teilt das aktuelle Fenster in deren zwei. Beide
Fenster beherbergen zun"achst den gleichen Textspeicher,
k"onnen aber unabh"angig voneinander einen neuen Textspeicher
einlesen. Die Anzahl der Fenster ist nur durch die Zeilenzahl
des Bildschirms begrenzt.

\subsubsection{Schliesse Fenster}

\begin{m2esyntax}
\item
  Befehle-Menu
\item
  \mbox{\keyctrl[X]\key{0}}
\item
  \mbox{\kkey[Shift/F7]}
\end{m2esyntax}

"`Schliesse Fenster"' schliesst das aktuelle Fenster und l"asst
das unmittelbar dar"uberstehende Fenster entsprechend gr"osser
werden. Wird das oberste Fenster geschlossen, wird das
darunterstehende vergr"ossert. Das Schliessen eines Fensters
hat keine direkte Einwirkung auf den zuvor angezeigten Textspeicher.
Dieser ist immer noch vorhanden und auch abrufbar. Ausserdem belegt
er ebenfalls noch seinen Speicherplatz.

\subsubsection{Nur ein Fenster}

\begin{m2esyntax}
\item
  Befehle-Menu
\item
  \mbox{\keyctrl[X]\key{1}}
\end{m2esyntax}

Damit k"onnen Sie das aktuelle Fenster auf die ganze
Bildschirmseite vergr"ossern.

\subsubsection{Vergr\protect"ossere Fenster}

\begin{m2esyntax}
\item
  \mbox{\keyctrl[X]\key{Z}}
\item
  \mbox{\kkey[Shift/F8]}
\end{m2esyntax}

Vergr"ossert das aktuelle Fenster um eine Zeile. Die Begrenzungszeile
des Fensters verschiebt sich um eine Zeile nach unten.
Wird das unterste Fenster vergr"ossert, wandert die Begrenzungszeile
des dar"uberliegenden Fensters um eine Zeile nach oben.

\subsubsection{Verkleinere Fenster}

\begin{m2esyntax}
\item
  \mbox{\keyctrl[X]\keyctrl[Z]}
\item
  \mbox{\keyf8}
\end{m2esyntax}

Damit verkleinern Sie das aktuelle Fenster um eine Zeile. Ein
Fenster k"onnen Sie im Normalmodus bis auf eine einzige Zeile,
im Interlace-Modus bis auf zwei Zeilen reduzieren.



\subsubsection{Makrobefehle}

Makros erlauben, immer wiederkehrende {\bf Tastaturfolgen} auf einen
Tastendruck abrufbar zu machen. Es ist immer nur eine Makrodefinition
m"oglich; sie kann jedoch beliebig oft erneuert werden.
Makros k"onnen nicht verschachtelt werden. Die maximale Anzahl von
abspeicherbaren Tastendr"ucken ist 256.

\subsubsection{Beginne Makro}

\begin{m2esyntax}
\item
  Befehle-Menu
\item
  \mbox{\keyctrl[X]\key{(}}
\item
  \mbox{\keyf4}
\end{m2esyntax}

"`Beginne Makro"' zeigt an, dass eine neue Makrodefinition
eingegeben wird. Nebst der Meldung auf der Statuszeile "andert
auch der Bildschirmtitel zu "`{\tt m2emacs Makro Definition}"'.
Nun kann eine beliebige Tastaturfolge eingegeben werden ---
die Befehle "`Beginne Makro"' und "`F"uhre Makro aus"' sind
allerdings tabu. Alle Aktionen werden sofort ausgef"uhrt und
gleichzeitig intern vermerkt. Ist die gew"unschte Ablauf"|folge
beendet, f"uhren Sie schliesslich den Befehl "`Beende Makro"'
aus.

\subsubsection{Beende Makro}

\begin{m2esyntax}
\item
  Befehle-Menu
\item
  \mbox{\keyctrl[X]\key{)}}
\item
  \mbox{\kkey[Shift/F4]}
\end{m2esyntax}

Schliesst die Makrodefinition ab. Die eingegebene Tastenfolge
ist von nun mit einem einzigen Tastendruck ausf"uhrbar.

\subsubsection{Makro ausf\protect"uhren}

\begin{m2esyntax}
\item
  Befehle-Menu
\item
  \mbox{\keyctrl[X]\key{E}}
\item
  \mbox{\keyf5}
\end{m2esyntax}

Makro ausf"uhren f"uhrt die zuvor definierte Tastenfolge aus.
Vorsicht ist allerdings bei allen Befehlen geboten, die sich
je nach Aussehen der Zeile verschieden verhalten, beispielsweise
der Befehl "`L"osche bis Ende Zeile"' bei bereits leeren Zeilen.
Versuchen Sie, solche Befehle in Makrodefinitionen zu vermeiden.

Einige Hinweise zur Leistungsf"ahigkeit der Makros sind im folgenden
Abschnitt \ref{EdHints} gegeben.


\subsubsection{Modula-2-Befehle, OHM}

Beim "Offnen einer Datei --- also m"oglicherweise bereits
beim Aufstarten
von {\tt m2emacs} --- wird ebenfalls nach einer {\bf Fehlerdatei} gesucht.
Eine Fehlerdatei eines \mtwo-Programms wird durch den Compiler
erzeugt und enth"alt in codierter Form alle bei der Compilation
gefunden Fehler. Der Name der Fehlerdatei ergibt sich aus dem Dateinamen,
erweitert um den Buchstaben "`{\tt E}"'\@. Wird eine solche Datei
gefunden, liest {\tt m2emacs} ebenfalls die Datei
{\tt Fehler-Meldungen} im Verzeichnis {\tt M2:}\ ein.
Da der Compiler nur Fehlernummern ablegt, ben"otigt man diese
Datei, um die Fehlernummern in eine Klartextmeldung zu
"ubersetzen.

\subsubsection{N\protect"achster Fehler}

\begin{m2esyntax}
\item
  Modula-2-Menu
\item
  \mbox{\keyf2}
\end{m2esyntax}
 
"`N"achster Fehler"' zeigt von der Cursorposition an das
n"achste Vorkommen eines Fehlers. Befindet sich zwischen
der Cursorposition und dem Ende des Textspeichers kein
Fehler mehr, wird die Fehlersuche vom Beginn des Textspeichers
an fortgesetzt. Nach dem Anzeigen des Fehlers wird dieser
aus der internen Fehlerliste gestrichen, d.h.\ jeder Fehler
wird nur einmal angezeigt. Nachdem alle Fehler gestrichen
sind, erscheint die Meldung "`{\tt Kein (weiterer) Fehler gefunden}"'.
 
\subsubsection{Lies Fehlerliste}

\begin{m2esyntax}
\item
  Modula-2-Menu
\item
  \mbox{\kkey[Shift/F2]}
\end{m2esyntax}
 
"`Lies Fehlerdatei"' liest die Fehlerdatei zum aktuellen Textspeicher
erneut ein. Dies ist n"utzlich, um schon gestrichene Fehler
nochmals anzeigen zu k"onnen. Andererseits kann so auch eine neu
erzeugte Fehlerdatei eingelesen werden, die der Compiler im
Hintergrund frisch erzeugt haben k"onnte.
 
\subsubsection{Compiliere Text}

\begin{m2esyntax}
\item
  Modula-2-Menu
\item
  \mbox{\keyctrl[$\backslash$]}
\end{m2esyntax}

Mit "`Compiliere Text"' k"onnen Sie den aktuellen Textspeicher
compilieren. Der Compiler liest seine Eingabe direkt aus
dem Textspeicher, und der Textspeicher wird {\em nicht\/} gesichert.
Im Fehlerfall wird allerdings eine Fehlerdatei geschrieben,
die auch gleich eingelesen wird.

F"ur diese Funktion muss der Compiler gestartet sein und auf
die Eingabe eines zu "ubersetzenden Moduls warten. Sonst erscheint die
Fehlermeldung "`{\tt EXPORT: Kein Port f"ur 'm2c' gefunden}"'.
Starten Sie dann in einem beliebigen Fenster einen Compiler
{\em ohne\/} Datei-Argumente, folglich im interaktiven Modus.


\subsubsection{Ohm Projekt}

\begin{m2esyntax}
\item
  Ohm-Menu
\item
  \mbox{\keyctrl[X]\key{o}}
\end{m2esyntax}

Diese Funktion erlaubt das "Andern des aktuell g"ultigen
Ohm-Projektes (Beschreibung siehe Abschnitt \ref{m2ohm}).
Die Vorgabe ist "`{\tt M2Amiga}"', kann aber auch auf der
Kommandozeile oder mittels Umgebungsvariable mit der Option 
{\tt -p\cmsltt Project\/} ge"andert werden.

\subsubsection{Ohm Aufruf}

\begin{m2esyntax}
\item
  Ohm-Menu
\item
  \mbox{\keyhelp}
\end{m2esyntax}

Hiermit wird --- ein gestartetes {\tt M2Ohm} vorausgesetzt --- das
"`Online Help Manual"' aktiviert.
Dies geschieht "uber die
ARexx-Schnittstelle von {\tt M2Ohm}.
Es werden die Texte angezeigt,
die {\tt M2Ohm} zu dem (Schl"ussel)-Wort unter beziehungsweise unmittelbar
vor dem Cursor hat. Damit erf"ahrt der
Programmierer, wo --- in der Titelleiste --- und wie --- im Fenster --- eine
Prozedur oder ein Datentyp definiert ist.

\subsection{Verschiedene Befehle}

\subsubsection{Abbruch einer Eingabe}

\begin{m2esyntax}
\item
  \mbox{\keyctrl[G]}
\item
  \mbox{\kkey[Shift/F5]}
\end{m2esyntax}


Damit brechen Sie die aktuelle Eingabe ab. Haben Sie
irrt"umlicherweise einen Befehl aufgerufen, k"onnen Sie
die Parameter-Eingabe mit \keyctrl[G] abbrechen. Sodann kehrt {\tt m2emacs}
wieder in den Normalmodus zur"uck, ohne den unerw"unschten Befehl
auszuf"uhren. Nicht abbrechen k"onnen Sie einen Befehl w"ahrend
der eigentlichen Bearbeitung.

\subsubsection{Info}

\begin{m2esyntax}
\item
  \mbox{\keyctrl[X]\key{=}}
\item
  \mbox{\kkey[Shift/F6]}
\end{m2esyntax}

Einige Angaben zum aktuellen Textspeicher sowie zum
Bildschirminhalt erscheinen auf der Statuszeile. Die einzelnen
Positionen haben dabei folgende Bedeutung:
\begin{description}
\item[Linien:]
  Die Anzahl der Zeilen des Textspeichers.
\item[Linie:]
  Die Zeilennummer, auf der sich der Cursor befindet. Die erste
  Zeile des Textspeichers hat den Wert 1.
\item[Zeile:]
  Die Bildschirmzeile, auf der sich der Cursor befindet. Die oberste
  Bildschirmzeile hat den Wert 0.
\item[Spalte:]
  Die Spalte innerhalb der Zeile, auf der sich der Cursor befindet. Die
  Spaltenz"ahlung beginnt ebenfalls mit 0.
\item[CH:]
  Der Ordinalwert des unter dem Cursor liegenden Zeichen in
  Hexadezimaldarstellung.
\item[.:]
  Die Ordnungszahl des Zeichens, auf dem der Cursor steht. Das erste
  Zeichen des Textspeichers hat die Ordnungszahl 0.
\end{description}
Die letzte Angabe zeigt die relative Cursorposition im Verh"altnis
zum gan\-zen Textspeicher, dessen Zeichenzahl auch angezeigt wird.

\subsubsection{Setze Z"ahler}

\begin{m2esyntax}
\item
  \mbox{\keyctrl[U]}
\end{m2esyntax}

Damit legen Sie einen Wiederholungsfaktor f"ur den n"achsten
Befehl fest. Auf der Statuszeile erscheint der Text
\mbox{\tt Z"ahler:\ 4}. Wird "`Setze Z"ahler"' erneut aufgerufen,
wird der aktuelle Z"ahlerwert mit vier multipliziert. Stattdessen
k"onnen sie auch eine Zahl eingeben.

So k"onnen Sie einen Wiederholungsfaktor 12 mit folgenden
Tastenfolgen setzen:
\begin{itemize}
\item
  \mbox{\keyctrl[U]\key{1}\key{2}}
\item
  \mbox{\keyctrl[U]\key{3}\keyctrl[U]}
\end{itemize}

Der Wiederholungsfaktor gilt f"ur den n"achsten Tastendruck.
Um 12 Zeilen einzuf"ugen, setzen Sie den Z"ahler auf 12 und
dr"ucken \keyret. Um 78 Sterne in den Text einzuf"ugen k"onnen
Sie einfach den Z"ahler auf 78 setzen und die \key{\verb'*'}-Taste
dr"ucken.

\begin{warning}
  Versuchen Sie nicht, den Z"ahler mit \keybs\ zu "andern! Die
  Funktion wird entsprechend dem Z"ahler ausgef"uhrt, d.h.\ soviele
  Zeichen, wie der Z"ahler zeigt, werden gel"oscht. Sie sind
  allerdings noch im Zwischenspeicher verf"ugbar.
\end{warning}

\subsubsection{\protect"Ubernimm Zeichen unver\protect"andert}

\begin{m2esyntax}
\item
  \mbox{\keyctrl[Q]}
\end{m2esyntax}

Dieser Befehl erm"oglicht die Eingabe solcher Zeichen, die
sonst nicht in den Text eingef"ugt werden k"onnen. Darunter
fallen beispielsweise die Kontrollzeichen. Das Kommando erlaubt
die Eingabe {\em eines\/} Sonderzeichens.


\subsubsection{Betriebssystemumgebung}

\subsubsection{Wechsle Verzeichnis}

\begin{m2esyntax}
\item
  Befehle-Menu
\item
  \mbox{\keyctrl[X]\key{D}}
\end{m2esyntax}

"`Wechsle Verzeichnis"' setzt das Verzeichnis so, als w"are {\tt m2emacs}
in diesem Verzeichnis aufgerufen worden. Das Verzeichnis ist
jedoch nur w"ahrend der Laufzeit und nat"urlich nur bis zum
n"achsten Wechsel g"ultig. Der Befehl hat keinen Einfluss auf
die Umgebung, von der {\tt m2emacs} aufgerufen wurde. Er erleichtert
die Eingabe von Dateinamen, wenn man viele Dateien des gleichen
Verzeichnisses bearbeiten m"ochte. Das angegebene Verzeichnis ist
auch erster Ausgangspunkt f"ur das Ausw"ahlen der Dateien mit dem
File-Requester.

\subsubsection{CLI-Befehl}

\begin{m2esyntax}
\item
  \mbox{\keyctrl[X]\key{!}}
\end{m2esyntax}

Mit CLI-Befehl k"onnen Sie einen CLI-Befehl ausf"uhren. So k"onnen
beispielsweise Dateien nach einem Muster durchsucht werden, ohne
den Editor zu verlassen. Arbeiten Sie noch mit der AmigaDOS Version
1.3, muss nebst dem gew"unschten Kommando 
zus"atzlich der {\tt run}-Befehl entlang dem vorgegebenen
AmigaDOS-Pfad vorhanden sein.

\subsubsection{Neues CLI}

\begin{m2esyntax}
\item
  Befehle-Menu
\item
  \mbox{\keyctrl[C]}
\end{m2esyntax}

Damit starten Sie ein neues CLI. F"ur die R"uckkehr nach {\tt m2emacs}
muss dieses CLI ganz normal mit {\tt endcli} verlassen werden.
Auch dieser Befehl ben"otigt unter AmigaDOS 1.3 den {\tt run}-Befehl.


\subsection{R\protect"uckgabewerte}

\begin{ttscript}{rcImportantNotFound}
\item[rcOk]
  Es wurden keine Dateien ver"andert.
\item[rcWarn]
  Mindestens eine der Dateien wurde ver"andert.
\end{ttscript}

\subsection{Zusammenfassung}


\subsubsection{Spezielle Hinweise}

\label{EdHints}
Makros werden im allgemeinen eher selten angewendet; dabei
ist der Aufwand zum Erstellen "ausserst gering. Nur ein Befehl
vor der gew"unschten Tastenfolge und einer zum Abschluss,
am einfachsten also \keyf4\ und \kkey[Shift/F4]. Beachten
Sie folgende Punkte, wenn Sie ein Makro erzeugen:
\begin{itemize}
\item
  Benutzen Sie "`absolute"' Positionierungsbefehle, also
  positionieren Sie den Cursor an den Anfang oder das Ende
  der Zeile oder des Worts und z"ahlen nicht einfach Buchstaben
  ab.
\item
  Das gleiche gilt f"ur L"oschbefehle: ein Wort l"oschen
  entspricht nicht nur der Programmlogik besser als einige
  Zeichen zu l"oschen, sondern ist auch ef"|fizienter in
  der Ausf"uhrung und Makro-Speicherung.
\item
  Verwenden Sie wenn m"oglich den Suchbefehl. Dadurch
  erreichen Sie auch eine Abbruchbedingung f"ur immer
  wiederkehrende Makros: ist eine Suche innerhalb eines
  Makros nicht erfolgreich,
  wird dieses abgebrochen.
\item
  Verwenden Sie bestehende Programmteile: aus einer
  Deklaration eines Aufz"ahlungstyps kann einfach eine
  {\tt CASE}-Anweisung erzeugt werden. Damit sparen Sie Arbeit
  und vermeiden Schreibfehler.
\end{itemize}

Suchen und Ersetzen sind einfach und schnell zu verwenden,
da die zuvor verwendeten Zeichenketten von {\tt m2emacs} gemerkt
werden. So lohnt sich die Funktion Ersetzen bereits f"ur
zwei Ersetzungen --- ausser es handle sich nur um einzelne
Buchstaben.

Interessant ist die Anwendung im Bezug auf die Gross- und
Kleinschreibung: so kann eine Zeichenkette beliebiger
Schreibweise durch eine genau definierte ersetzt werden.
Voraussetzung ist, dass die Option "`Gross/Klein"' nicht gesetzt
ist.

Wollen Sie vorhandene Programmteile kopieren, versuchen Sie am besten,
den gr"osst"-m"og\-li\-chen {\em gemeinsamen\/} Teil zu kopieren.
Das Hinzuf"ugen von Text ist in jedem Fall einfacher, als
bestehenden Text zu ersetzen. Wenn Sie die Schreibarbeit
generell einschr"anken wollen, k"onnen Sie sich auch eine
Datei mit den gebr"auchlichsten Sprach-Konstrukten zusammenstellen,
diese in einem eigenen Fenster darstellen
und die Elemente daraus kopieren.

\newpage \raggedbottom
\subsubsection{Befehlszusammenfassung}

\subsubsection{Cursor-Bewegung}

\begin{tabular}{lll}
Buchstabe & \keyleft & \keyright \\
Zeile & \keyup & \keydown \\
Wort & \keyaltleft & \keyaltright \\
Seite & \keyaltup & \keyaltdown \\
Zeile & \keyshiftleft & \keyshiftright \\
Textspeicher & \keyshiftup & \keyshiftdown \\
\end{tabular}

\subsubsection{L\protect"oschtasten}

\begin{tabular}{lll}
Buchstabe zur"uck/vor & \keybs & \keydel \\
Wort zur"uck/vor & \kkey[Alt/BS] & \kkey[Alt/Del] \\
Zeile zur"uck/vor & \kkey[Shift/BS] & \kkey[Shift/Del] \\
\end{tabular}

\subsubsection{Funktionstasten}

\begin{tabular}{ll}
\keyf1 & "Offne neue Datei \\
\kkey[Shift/F1] & Sichere aktuellen Textspeicher \\
\keyf2 & Zeige n"achsten Fehler \\
\kkey[Shift/F2] & Lies Fehlerliste erneut ein \\
\keyf3 & Suche Zeichenkette \\
\kkey[Shift/F3] & Ersetze Zeichenkette \\
\keyf4 & Beginne mit Makro-Definition \\
\kkey[Shift/F4] & Schliesse Makro-Definition ab \\
\keyf5 & F"uhre Makro aus\\
\kkey[Shift/F5] & Brich aktuelle Eingabe ab \\
\keyf6 & Springe auf Zeile \\
\kkey[Shift/F6] & Information \\
\keyf7 & Teile Fenster \\
\kkey[Shift/F7] & Schliesse Fenster \\
\keyf8 & Verkleinere das aktuelle Fenster \\
\kkey[Shift/F8] & Vergr"ossere das aktuelle Fenster \\
\keyf9 & Verschiebe Text nach oben (vorw"arts) \\
\kkey[Shift/F9] & Verschiebe Text nach unten (r"uckw"arts) \\
\keyf{10} & L"osche aktuelle Zeile \\
\kkey[Shift/F10] & F"uge oberhalb neue Zele ein \\
\end{tabular}

\subsubsection{Control-Befehle}

\begin{tabular}{ll}
\keyctrl[\verb'@'] & Setze Marke \\
\keyctrl[A] & Gehe zum Zeilenanfang \\
\keyctrl[B] & Gehe einen Buchstaben zur"uck \\
\keyctrl[C] & Starte CLI \\
\keyctrl[D] & L"osche Buchstaben unter dem Cursor \\
\keyctrl[E] & Gehe zum Zeilenende \\
\keyctrl[F] & Gehe einen Buchstaben vorw"arts \\
\keyctrl[G] & Brich aktuelle Eingabe ab \\
\keyctrl[H] & L"osche Buchstaben vor dem Cursor \\
\keyctrl[I] & F"uge Tabulator-Zeichen ein \\
\keyctrl[J] & F"uge Zeilenumbruch ein \\
\keyctrl[K] & L"osche bis zum Zeilenende, falls Zeile leer, l"osche Zeile \\
\keyctrl[L] & Erneuere Bildschirminhalt \\
\keyctrl[M] & F"uge Zeilenumbruch ein \\
\keyctrl[N] & Gehe eine Zeile vorw"arts \\
\keyctrl[O] & F"uge neue Zeile oberhalb ein \\
\keyctrl[P] & Gehe eine Zeile r"uckw"arts \\
\keyctrl[Q] & "Ubernimm n"achsten Buchstaben unver"andert \\
\keyctrl[R] & Suche r"uckw"arts \\
\keyctrl[S] & Suche vorw"arts \\
\keyctrl[T] & Vertausche die letzten beiden Buchstaben \\
\keyctrl[U] & Setze Z"ahler \\
\keyctrl[V] & Gehe eine Seite vorw"arts \\
\keyctrl[W] & Schneide Bereich aus\\
\keyctrl[X] & erweiterte Befehle ($\rightarrow$ unten) \\
\keyctrl[Y] & Setze Zwischenspeicher ein \\
\keyctrl[Z] & Sichere und Verlasse \\
\end{tabular}

\subsubsection{Erweiterte Befehle}

\begin{tabular}{ll}
\keyctrl[X]\keyctrl[B] & Zeige eine Liste aller Textspeicher \\
\keyctrl[X]\keyctrl[C] & Verlasse den Editor \\
\keyctrl[X]\keyctrl[D] & L"osche aktuelle Zeile \\
\keyctrl[X]\keyctrl[F] & Neuer Dateinamen \\
\keyctrl[X]\keyctrl[J] & F"uge Zeilen zusammen \\
\keyctrl[X]\keyctrl[L] & Mache Kleinbuchstaben im Bereich \\
\keyctrl[X]\keyctrl[M] & Zeige n"achsten Fehler \\
\keyctrl[X]\keyctrl[N] & Verschiebe Text nach oben (vorw"arts) \\
\keyctrl[X]\keyctrl[P] & Verschiebe Text nach unten (r"uckw"arts) \\
\keyctrl[X]\keyctrl[R] & "Offne neue Datei \\
\keyctrl[X]\keyctrl[S] & Sichere aktuellen Textspeicher \\
\keyctrl[X]\keyctrl[U] & Mache Grossbuchstaben im Bereich \\
\keyctrl[X]\keyctrl[V] & Lies Datei \\
\keyctrl[X]\keyctrl[W] & Sichere als neue Datei \\
\keyctrl[X]\keyctrl[X] & Vertausche Cursor mit Marke \\
\keyctrl[X]\keyctrl[Z] & Verkleinere das aktuelle Fenster \\
\keyctrl[X]\key{!} & F"uhre einen CLI-Befehl aus \\
\keyctrl[X]\key{=} & Information \\
\keyctrl[X]\key{(} & Beginne mit Makrodefinition \\
\keyctrl[X]\key{)} & Schliesse Makrodefinition ab \\
\keyctrl[X]\key{0} & Schliesse Fenster \\
\keyctrl[X]\key{1} & Nur ein Fenster \\
\keyctrl[X]\key{2} & Teile Fenster \\
\keyctrl[X]\key{B} & Benutze Textspeicher \\
\keyctrl[X]\key{C} & Schalte Gross-/Klein-Unterscheidung aus \\
\keyctrl[X]\key{D} & Wechsle Verzeichnis \\
\keyctrl[X]\key{E} & F"uhre Makro aus \\
\keyctrl[X]\key{I} & Schalte automatisches Einr"ucken um \\
\keyctrl[X]\key{K} & L"osche einen Textspeicher \\
\keyctrl[X]\key{N} & Gehe zum n"achsten Fenster \\
\keyctrl[X]\key{P} & Gehe zum vorigen Fenster \\
\keyctrl[X]\key{W} & Schalte Ikonenerzeugung um \\
\keyctrl[X]\key{Z} & Vergr"ossere das aktuelle Fenster \\
\keyctrl[X]\keydel & L"osche aktuelle Zeile \\
\end{tabular}

\subsubsection{ESC-Befehle}

\begin{tabular}{ll}
\keyesc\keybs & L"osche ein Wort zur"uck \\
\keyesc\key{!} & Setze aktuelle Zeile an oberen Bildschirmrand \\
\keyesc\key{.} & Setze Marke \\
\keyesc\key{\verb'>'} & Gehe zum Ende des Textspeichers \\
\keyesc\key{\verb'<'} & Gehe an den Anfang des Textspeichers \\
\keyesc\key{B} & Gehe ein Wort zur"uck \\
\keyesc\key{C} & Mache Wort gross \\
\keyesc\key{D} & L"osche ein Wort vorw"arts \\
\keyesc\key{F} & Gehe ein Wort vor \\
\keyesc\key{H} & Setze aktuelle Zeile an oberen Bildschirmrand \\
\keyesc\key{L} & Mache Wort mit Kleinbuchstaben \\
\keyesc\key{M} & Gehe zur Zeile \\
\keyesc\key{U} & Mache Wort mit Grossbuchstaben \\
\keyesc\key{V} & Bl"attere Seite zur"uck \\
\keyesc\key{W} & Kopiere Bereich \\
\keyesc\key{Y} & Kopiere Bereich auf Datei \\
\keyesc\key{\%} & Ersetzen \\
\end{tabular}
