Einführung in Emacs. Siehe Dateiende für Vervielfältigungsbedingungen. Emacs-Befehle beinhalten im allgemeinen die CONTROL-Taste (manchmal auch als CTRL, CTL oder STRG beschriftet) sowie die META-Taste (auch EDIT oder ALT genannt). Folgende Abkürzungen werden verwendet: C- bedeutet, daß die CONTROL-Taste gedrückt sein muß, während man das Zeichen eingibt. Beispiel: C-f Halten Sie die CONTROL-Taste gedrückt und drücken Sie dann die f-Taste. M- bedeutet, daß die META-Taste gedrückt sein muß, während man das Zeichen eingibt. Statt dessen kann man auch die ESC-Taste und anschließend drücken (hintereinander, nicht gleichzeitig). Beispiel: M-f Halten Sie die META-Taste gedrückt und geben Sie den Buchstaben (klein) f ein. `>>' am linken Rand ist ein Hinweis, einen Befehl auszuprobieren: <> [Leerzeilen befinden sich hier aus didaktischen Gründen. Fortsetzung unten.] >> Drücken Sie C-v, um zur nächsten Bildschirmseite vorzublättern. Ab jetzt sollten Sie das stets tun, wenn Sie eine Seite fertig gelesen haben. Beachten Sie bitte, daß beim Blättern die untersten zwei Zeilen der vorigen Bildschirmseite als die zwei obersten Zeilen der neuen Seite erscheinen, um eine gewisse Kontinuität während des Lesens zu ermöglichen. Wichtig: Sie können Emacs mit der Befehlsfolge C-x C-c beenden. Im weiteren wird die ESC-Taste mit bezeichnet. [Falls die deutschen Umlaute nicht korrekt auf dem Bildschirm erscheinen, lesen Sie bitte den Abschnitt `MULE' kurz vor Ende dieser Einführung.] Zunächst müssen Sie wissen, wie man sich innerhalb eines Dokuments bewegen kann. Wie man eine Bildschirmseite vorwärts blättert, wissen Sie schon (C-v). Mit M-v blättern Sie eine Bildschirmseite zurück (halten Sie die META-Taste gedrückt und geben Sie v ein, oder drücken Sie zuerst und anschließend v). >> Probieren Sie einige Male M-v und C-v aus. [Auf den meisten Tastaturen bewirkt die PgUp-Taste (`page up', auch mit `Bild' und einem Aufwärtspfeil beschriftet) dasselbe wie M-v bzw. die PgDn-Taste (`page down', `Bild' mit Abwärtspfeil) dasselbe wie C-v.] * ZUSAMMENFASSUNG ----------------- Die folgenden Befehle sind nützlich, um Text bildschirmweise zu betrachten: C-v eine Seite vorwärts blättern M-v eine Seite zurück blättern C-l lösche den Bildschirm und stelle den ganzen Text erneut dar, wobei der Text rund um den Cursor zur Mitte des Bildschirms bewegt wird. (`l' ist der Buchstabe `klein L', nicht die Ziffer 1.) >> Lokalisieren Sie den Cursor und merken sich den Text in dessen Umgebung. Drücken Sie C-l. Der Cursor ist jetzt ungefähr in der (vertikalen) Bildschirmmitte, und er hat seine Position relativ zum Text nicht geändert. * KONTROLLE DES CURSORS ----------------------- Text bildschirmweise anzuschauen ist sicherlich praktisch, aber wie kommt man zu einer bestimmten Position innerhalb des gerade dargestellten Textes? Es gibt verschiedene Möglichkeiten. Die Grundbefehle sind C-p, C-b, C-f und C-n. Dem folgenden Diagramm können Sie entnehmen, welcher Befehl den Cursor wohin bewegt: vorige Zeile, C-p : : zurück, C-b .... momentane Cursor-Position .... vorwärts, C-f : : nächste Zeile, C-n [Die Buchstaben p, b, f und n stehen für die englischen Worte `previous', `backward', `forward' und `next'.] >> Bewegen Sie den Cursor zur Zeile in der Mitte des Diagramms mittels C-n oder C-p. Geben Sie dann C-l ein, und das ganze Diagramm ist zentriert auf dem Bildschirm. Normalerweise sind die vier Pfeiltasten mit den Cursor-Grundbefehlen belegt. Falls nicht, sollten Sie Ihre Terminalkonfiguration überprüfen. Wenn z.B. Ihr Terminalprogramm (mit dem Sie sich über eine Modem-Leitung in Ihrem Rechenzentrum oder Internet-Provider eingewählt haben) ein vt100-Terminal emuliert, sollte die Umgebungsvariable `TERM=vt100' gesetzt sein. Unter dem X Window System sollten die Pfeiltasten immer richtig belegt sein. Es ist von großer Wichtigkeit, sich mit obigen Cursor-Befehlen vertraut zu machen, da man sie ständig braucht (besonders wenn man mit Terminal-Emulationen arbeitet, welche die Pfeiltasten nicht unterstützen). >> Drücken Sie ein paarmal C-n, um den Cursor zu dieser Zeile zu bewegen. >> Bewegen Sie den Cursor vorwärts mittels C-f und nach oben mit C-p. Beobachten Sie, was C-p tut, wenn der Cursor sich in der Zeilenmitte befindet. Jede Textzeile endet mit einem Zeilenvorschub-Zeichen (`newline'), das sie von der folgenden Zeile trennt. >> Probieren Sie C-b am Anfang einer Zeile. Der Cursor sollte zum Ende der vorigen Zeile springen: C-b überspringt Zeilenvorschub-Zeichen. C-f überspringt Zeilenvorschub-Zeichen analog zu C-b. >> Drücken Sie noch ein paarmal C-b, um ein Gefühl für den Cursor zu bekommen. Bewegen sie anschließend den Cursor mittels C-f zum Ende der Zeile. Geben Sie jetzt noch einmal C-f ein, um zur nächsten Zeile zu springen. >> Falls die Pfeiltasten funktionieren, können Sie mit diesen das gleiche probieren und üben. Wenn Sie den Cursor entweder nach oben oder nach unten über den Bildschirmrand hinaus bewegen wollen, dann wird statt dessen Text in den Bildschirm hineingeschoben. Dies nennt man `scrolling'. Auf diese Weise verhindert Emacs, daß der Cursor je den sichtbaren Bereich verläßt. >> Versuchen Sie den Cursor über den unteren Bildschirmrand hinaus zu bewegen und beobachten Sie, was geschieht. Wenn zeichenweise Cursorbewegung zu langsam ist, dann kann man den Cursor wortweise bewegen. M-f (META-f) bewegt den Cursor ein Wort vor, und M-b ein Wort zurück. >> Geben Sie ein paarmal M-f und M-b ein. Befinden Sie sich in der Mitte eines Wortes, bewegt M-f den Cursor zum Ende des Wortes. Befinden Sie dagegen sich in einem Wortzwischenraum, bewegt M-f den Cursor zum Ende des nächsten Wortes. M-b arbeitet analog, aber in die entgegengesetzte Richtung. >> Kombinieren Sie M-f und M-b mit den Befehlen C-f und C-b, um die Cursorbewegung von verschiedenen Positionen aus innerhalb und zwischen Wörtern zu beobachten. Beachten Sie die Parallele zwischen C-f und C-b einerseits und M-f und M-b andererseits. Sehr oft werden mit `META-' beginnende Befehle für Operationen verwendet, die mit Sprache zu tun haben (Wörter, Sätze, Absätze), während CONTROL-Befehle mit den Text-Basiseinheiten operieren, unabhängig davon, was Sie gerade editieren (Zeichen, Buchstaben, Zeilen etc). Ein anderes Beispiel: C-a und C-e bewegt den Cursor zum Anfang bzw. zum Ende einer Zeile, wohingegen M-a und M-e den Cursor zum Anfang bzw. zum Ende eines Satzes springen läßt. >> Probieren Sie ein paarmal C-a und C-e. Probieren Sie dann ein paarmal M-a und M-e. Beachten Sie, daß ein wiederholtes Drücken von C-a nichts bewirkt, dagegen M-a den Cursor satzweise zurücksetzt. Hier endet die Analogie, jedoch ist das Verhalten dieser Befehle leicht nachvollziehbar. [Anmerkung 1: Im Deutschen kommt laut Duden nach einem Punkt nur ein Leerzeichen. Falls Sie aber Texte schreiben, die weiter verarbeitet werden (z.B. durch ein Textformatierprogramm wie TeX), dann sollten Sie sich angewöhnen, nach einem Satzende stets ZWEI Leerzeichen zu lassen. Dadurch ermöglichen Sie u.a., daß Emacs zwischen Abkürzungspunkten und dem Satzende unterscheiden kann, was für Textsuche in wissenschaftlichen Texten oft vorteilhaft ist.] [Anmerkung 2: Die Tasten `Home' (Pos1) und `End' (Ende) verhalten sich standardmäßig wie C-a und C-e, wie wohl die meisten Benutzer annehmen.] Die aktuelle Position des Cursors wird im Englischen auch `point' (Punkt) genannt. Beachten Sie bitte, daß sich `point' stets *zwischen* zwei Zeichen befindet, nämlich genau vor dem Cursor-Kästchen. Hier ist eine Zusammenfassung von einfachen Bewegungsbefehlen für den Cursor einschließlich der Wort- und Satzbewegungsbefehle: C-f ein Zeichen vorwärts (auch `Pfeil rechts'-Taste) C-b ein Zeichen zurück (auch `Pfeil links'-Taste) M-f ein Wort vorwärts M-b ein Wort zurück C-n eine Zeile vorwärts (auch `Pfeil hinunter'-Taste) C-p eine Zeile zurück (auch `Pfeil hinauf'-Taste) C-a zum Zeilenanfang C-e zum Zeilenende M-a zum Satzanfang M-e zum Satzende >> Probieren Sie diese Befehle jetzt ein paarmal zur Übung. Es sind die meistverwendeten Befehle innerhalb Emacs. Zwei weitere wichtige Befehle für die Cursorbewegung sind M-< (META Kleiner-als) und M-> (META Größer-als), welche zum Anfang bzw. zum Ende des ganzen Textes springen. Bei den meisten Terminal-Tastaturen befindet sich `<' über dem Komma, d.h., Sie müssen zusätzlich die SHIFT-Taste verwenden (der Umschalter ist auf deutschen Tastaturen normalerweise mit einem dicken Aufwärtspfeil markiert). Ohne SHIFT-Taste würden Sie M-Komma eingeben. >> Testen Sie nun M-<, um an den Anfang der Einführung zu gelangen. Verwenden Sie dann C-v, um wieder hierher zu kommen. Ein weiteres, oft benütztes Konzept in Emacs ist die Markierung (`mark'). Der Grundbefehl dazu ist C-SPC (oder gleichwertig C-@, `SPC' bezeichnet die Leertaste, engl. `space key'); mit ihm kann eine Markierung gesetzt werden. Mit C-u C-SPC kommt man zu dieser Markierung zurück, falls man den Cursor inzwischen weiterbewegt hat. Viele Befehle, die große Sprünge in einem Text ausführen (so auch M-> und M-<) setzen eine Markierung implizit, was in der untersten Zeile (dem Echobereich, s.u.) als `Mark set' angezeigt wird. >> Verwenden Sie jetzt M->, um zum Ende der Einführung zu springen und benützen Sie C-u C-SPC, um hierher zurückzukehren. Markierungen werden in einem Ring gespeichert (d.h., die zuletzt in den Ring eingehängte Markierung wird als erste zurückgeholt und wie bei einem Schlüsselbund am Ende wieder in den Ring eingefügt). Mit C-u C-SPC können Sie Stück für Stück alle Markierungen im Markierungsring ansteuern. >> Drücken Sie hier C-SPC, gehen Sie dann zu verschiedenen Positionen innerhalb dieses Dokuments und verwenden Sie C-SPC, um weitere Markierungen zu setzen. Geben Sie anschließend C-u C-SPC so oft ein, bis Sie wieder an dieser Position angelangt sind. Die meisten Emacs-Befehle akzeptieren ein numerisches Argument, das in der Regel als Wiederholungszähler dient (d.h., wie oft der Befehl ausgeführt werden soll). Eingegeben wird diese Zahl mit C-u, dann die Ziffern und dann der Befehl selbst. Alternativ können Sie die META-Taste (bzw. EDIT- oder ALT-Taste) gedrückt halten und dann die Ziffern des Wiederholungszählers eingeben. Wir empfehlen allerdings, die C-u-Methode zu lernen, da sie mit jedem Terminal funktioniert. Das numerische Argument wird auch `Präfix-Argument' genannt, da man es vor dem zugehörigen Befehl eingibt. Beispiel: C-u 8 C-f bewegt den Cursor acht Zeichen vorwärts. >> Versuchen Sie, C-n oder C-p mit einem numerischen Argument zu verwenden und bewegen Sie den Cursor mit nur einem Befehl ungefähr hierher. Wie gesagt, die meisten Befehle verwenden das numerische Argument als Wiederholungszähler, jedoch nicht alle. Einige davon, die allerdings noch nicht besprochen wurden, benützen es als Flag (`Flagge'), d.h., allein das Vorhandensein eines Präfix-Arguments, unabhängig von seinem Wert, signalisiert dem Befehl, etwas anderes zu tun. C-v und M-v sind weitere Ausnahmen. Gibt man diesen Befehlen einen Parameter n, dann verschieben sie den Bildschirminhalt nicht um eine ganze Bildschirmseite, sondern um n Zeilen. Beispiel: C-u 4 C-v verschiebt den Bildschirminhalt um vier Zeilen. >> Versuchen Sie jetzt C-u 8 C-v auszuführen. Der Bildschirminhalt sollte jetzt um acht Zeilen nach oben verschoben sein. Wollen Sie ihn nach unten verschieben, dann geben Sie M-v mit einem numerischen Argument ein. Wenn Sie eine graphische Oberfläche wie X oder MS-Windows verwenden, dann befindet sich ein schmaler, langgezogener rechteckiger Bereich auf der linken oder rechten Seite des Emacs-Fensters. Dieser Bereich wird Scrollbar genannt (`Verschiebungsbalken'). Sie können Text verschieben, indem Sie mit der Maus auf den Scrollbar klicken. >> Drücken Sie die mittlere Taste (oder die linke und rechte Taste gleichzeitig, falls Sie eine Zwei-Tasten-Maus verwenden) innerhalb des Scrollbar-Bereichs. Das sollte den Text zu einer Position verschieben, die davon abhängt, wie weit oben oder unten Sie geklickt haben. >> Bewegen Sie nun die Maus auf und ab, während Sie die mittlere Taste gedrückt halten. Sie werden sehen, daß der Text entsprechend der Mausbewegungen nach oben oder unter verschoben wird. * WENN EMACS NICHT MEHR REAGIERT -------------------------------- Wenn Emacs `hängt', also auf keine Ihrer Eingaben reagiert, drücken Sie C-g. Sie können C-g auch dazu benützen, einen Befehl zu stoppen, der zu lange braucht. Eine andere Anwendung ist, einen teilweise eingegebenen Befehl zu verwerfen, z.B. ein irrtümlich eingetipptes numerisches Argument zu entfernen. >> Geben Sie C-u 100 ein, um ein numerisches Argument 100 zu spezifizieren, und drücken Sie dann C-g. Wenn Sie jetzt C-f ausführen, dann bewegt sich der Cursor genau ein Zeichen vorwärts, da Sie ja das numerische Argument mittels C-g gelöscht haben. Wenn Sie aus Versehen gedrückt haben, können Sie dies ebenfalls mit C-g rückgängig machen. * DEAKTIVIERTE BEFEHLE ---------------------- Ein paar Befehle von Emacs sind deaktiviert (`disabled'), damit Anfänger sie nicht unabsichtlich benutzen. Wenn Sie einen solchen Befehl eingeben, dann gibt Emacs eine Meldung aus und fragt Sie, ob Sie ihn wirklich ausführen wollen. Antworten Sie mit y (für `yes') oder drücken Sie die Leertaste, wenn Sie den Befehl ausführen wollen, sonst mit n. >> Geben Sie C-x C-l ein (das ist ein deaktivierter Befehl) und drücken Sie n als Antwort auf die Frage. * FENSTER --------- Emacs kann mehrere Fenster (`windows') haben, von denen jedes seinen eigenen Text darstellt. Später erklären wir, wie man mit Fenstern umgeht. Hier wollen wir nur erklären, wie man ein (vielleicht irrtümlich erzeugtes) Fenster wieder entfernt und zum normalen Ein-Fenster-Editieren zurückkommt. Der Befehl ist einfach: C-x 1 Ein Fenster (d.h., schließe alle anderen Fenster) Das ist C-x gefolgt von der Ziffer 1. C-x 1 expandiert das Fenster, in dem der Cursor sich befindet, sodaß es den ganzen Bildschirm erfaßt. Alle anderen Fenster werden gelöscht. [Anmerkung: Emacs verwendet das Wort Fenster (`windows') in einem anderen Sinn, als Sie es vielleicht gewöhnt sind. Wenn Sie einen Textbildschirm vor sich haben, dann ist die Terminologie eindeutig. Wenn Sie allerdings eine graphische Oberfläche benutzen, dann bezeichnet ein Emacs-Fenster einen Teilbereich des Fensters (von Ihrer graphischen Oberfläche erzeugt), in dem Emacs läuft, in völliger Analogie zum Textmodus. Für (graphische) Fenster im herkömmlichen Sinn verwenden die Emacs-Entwickler den Ausdruck Rahmen (`frame').] >> Bewegen Sie den Cursor zu dieser Zeile und geben Sie C-u 0 C-l ein. >> Drücken Sie jetzt C-h k C-f. Beachten Sie, wie das Fenster schrumpft und ein neues dazukommt, welches die (englische) Dokumentation des C-f Befehls anzeigt. >> Geben Sie jetzt C-x 1 ein. Das Dokumentationsfenster verschwindet wieder. * EINFÜGEN UND LÖSCHEN ---------------------- Wenn Sie Text einfügen wollen, dann geben Sie ihn einfach ein. Sichtbare Zeichen, z.B. A, 7, * usw. werden als Text von Emacs sofort eingefügt. Drücken Sie (die Zeilenvorschubtaste, meistens mit `Enter' oder nur mit einem Rückwärts-Hakenpfeil beschriftet), um ein Zeilenvorschubzeichen einzufügen. Sie können das zuletzt eingegebene Zeichen löschen, indem Sie drücken. ist einer Taste auf der Tastatur zugeordnet, die mit `Del' oder `Entf' beschriftet ist. In manchen Fällen dient die Backspace-Taste (oft auch nur als Rückwärtspfeil beschriftet) als , aber nicht immer! Allgemein gesprochen löscht das Zeichen unmittelbar vor der aktuellen Cursorposition. [Beachten Sie, daß ein logischer Befehlsname ist, der auf die jeweilige Tastatur abgebildet wird. Lesen Sie im Abschnitt `Rebinding Keys in Your Init File' des Emacs-Handbuches nach, wie Sie gegebenenfalls die Tastaturbelegung verändern können.] >> Probieren Sie das jetzt aus: Geben Sie ein paar Zeichen ein und löschen Sie sie wieder mit . Sie brauchen sich keine Sorgen zu machen, dieses Dokument zu verändern: Was Sie hier lesen, ist nur eine (persönliche) Kopie des originalen Dokuments. Wenn eine Textzeile zu lang wird für eine Bildschirmzeile, dann wird sie auf einer zweiten Bildschirmzeile `fortgesetzt'. Ein `Backslash'-Zeichen (`\') bzw. ein kleiner gebogener Pfeil (bei graphischen Oberflächen) am rechten Rand verdeutlicht das. >> Fügen Sie Text ein, bis Sie den rechten Rand erreicht haben. Fügen Sie weiter Text ein. Beobachten Sie, wie eine Fortsetzungszeile erscheint. >> Verwenden Sie so oft, bis die Textzeile wieder auf eine Bildschirmzeile paßt. Die Fortsetzungszeile verschwindet wieder. Sie können das Zeilenvorschubzeichen wie jedes andere Zeichen löschen: Die Zeilen vor und nach ihm werdan dann zu einer zusammengehängt. Ist diese länger als die Bildschirmbreite, erscheint eine Fortsetzungszeile. >> Bewegen Sie den Cursor zum Anfang der Zeile und geben Sie ein: Die momentane Zeile wird an die vorige angehängt. >> Geben Sie ein, um wieder ein Zeilenvorschubzeichen einzufügen. Denken Sie daran, daß die meisten Emacs-Befehle mit einem Wiederholungszähler aufgerufen werden können. Tun Sie das mit einem Textzeichen, dann wird es entsprechend dem numerischen Parameter wiederholt. >> Drücken Sie C-u 8 *, und es wird ******** eingefügt. Bis jetzt kennen Sie die Grundbefehle, um Text in Emacs einzugeben und Fehler zu korrigieren -- fast analog zu den Bewegungsbefehlen ist es möglich, ganze Wörter, Sätze oder Zeilen zu löschen: lösche ein Zeichen vor dem Cursor C-d lösche das Zeichen unter dem Cursor M- lösche bis zum (nächsten) Wortanfang unmittelbar vor dem Cursor M-d lösche bis zum (nächsten) Wortende nach (bzw. unter) dem Cursor C-k lösche von momentaner Cursorposition bis zum Ende der Zeile M-k lösche bis zum nächsten Satzende nach (bzw. unter) dem Cursor Beachten Sie bitte, daß je nach Tastaturbelegung die Del- (Entf-) oder die Backspace- (Rückwärtspfeil-) Taste sein kann. Eine andere, einheitliche Methode zum Löschen von Text ist das Befehlspaar C-@ (oder C-SPC) und C-w. Gehen sie zum Anfang des zu löschenden Textes und drücken Sie C-@ oder C-SPC. Gehen Sie dann zum Ende des zu löschenden Textes und drücken Sie C-w, um ihn zu entfernen. >> Bewegen Sie den Cursor zum Buchstaben `E' am Anfang des letzten Absatzes. >> Drücken Sie C-SPC. Emacs sollte die Meldung `Mark set' am unteren Bildschirmrand zeigen. >> Bewegen Sie den Cursor zum Buchstaben `A' in der zweiten Zeile des letzten Absatzes. >> Geben Sie C-w ein. Der ganze Text, beginnend mit dem `E' und endend vor dem `A', ist nun gelöscht. Löschen Sie mehr als ein Zeichen auf einmal, dann speichert Emacs den gelöschten Text, damit Sie ihn bei Bedarf wieder zurückholen können. Einfügen von bereits gelöschtem Text wird im englischen Dokumentation von Emacs als `yanking' (wörtlich `herausreißen') bezeichnet. Sie können den gelöschten Text an einer beliebigen Stelle wieder einzufügen. Solange Sie nichts neues löschen, steht Ihnen dieser gelöschte Textteil immer wieder zu Verfügung. Der Befehl dazu ist C-y (das Ypsilon steht für `yank'). Emacs unterscheidet zwei Klassen von Löschbefehlen (was man im Deutschen leider nicht gut wiedergeben kann): `killing' (umbringen) und `deleting' (löschen). Wenn man sich vorstellt, daß `yanking' den Begriff `von den Toten erwecken' darstellt, dann hat man ungefähr eine Vorstellung von der Metapher -- Von einem `kill'-Befehl gelöschter Text wird gespeichert und kann bei Bedarf mit C-y zurückgeholt werden. Von einem `delete'-Befehl entfernter Text (in der Regel einzelne Zeichen, leere Zeilen und Zwischenräume) wird nicht extra gespeichert und kann daher auch nicht zurückgeholt werden. >> Bringen Sie den Cursor an den Anfang einer nicht-leeren Zeile und geben Sie C-k ein, um die Zeile zu löschen. >> Geben Sie C-k ein zweites Mal ein. Nun wird der Zeilenvorschub ebenfalls entfernt. Das letzte Beispiel zeigt, daß ein einmaliges Ausführen von C-k den Zeileninhalt löscht, und daß ein nochmaliger C-k-Befehl die Zeile selbst löscht. Ein numerisches Argument für C-k wird speziell behandelt: es löscht die angegebene Anzahl von Zeilen UND die Zeilenvorschübe: C-u 2 C-k löscht zwei Zeilen komplett; zweimal C-k löscht dagegen nur eine Zeile. Wie schon erwähnt, bringt C-y den zuletzt gelöschten (`gekillten') Text zurück -- man kann diesen Text einfügen, wo man will: an der ursprünglichen Stelle, an einer anderen Stelle, oder sogar in einer anderen Datei. Mehrmaliges Ausführen von C-y fügt den Text mehrmals ein. >> Probieren Sie jetzt C-y, um diesen Effekt zu sehen. Führen Sie C-k mehrmals hintereinander aus, dann wird der so gelöschte Text auf einmal gespeichert; C-y bringt dann den gesamten Text zurück. >> Drücken Sie mehrmals C-k. Holen Sie jetzt den Text `von den Toten' zurück: >> Drücken Sie C-y. Bewegen Sie dann den Cursor ein paar Zeilen nach unten und drücken Sie C-y erneut. Der eben eingefügte Text wird noch einmal an anderer Stelle kopiert. Wie können Sie gelöschten Text wieder einfügen, wenn Sie in der Zwischenzeit noch etwas anderes `gekillt' haben? C-y würde das zuletzt gelöschte Textstück zurückholen, was aber nicht das gewünschte ist. Verwenden Sie nun M-y (unmittelbar nach der erstmaligen Ausführung von C-y), um den gerade mit C-y eingefügten Textteil durch ein früher gelöschtes Textstück zu ersetzen. Durch wiederholtes Betätigen von M-y kommen immer ältere gelöschte Textteile zum Vorschein. Haben Sie das gewünschte gefunden, dann brauchen Sie nichts weiter zu tun. Lassen Sie den eingefügten Text so wie er ist und setzen Sie das Editieren fort. Drücken Sie M-y immer weiter, dann kommen Sie irgendwann wieder an den Anfangspunkt zurück (Emacs zeigt Ihnen dann wieder das zuletzt gelöschte Textfragment), haben also den gesamten Löschring durchgesehen. >> Löschen Sie eine Zeile, bewegen Sie den Cursor zu einer anderen Position und löschen Sie eine weitere Zeile. Drücken Sie dann C-y, um die zweite gelöschte Zeile zurückzuholen. Drücken Sie jetzt M-y, und die erste gelöschte Zeile erscheint statt der zweiten. Führen Sie nun ein paar weitere M-y-Befehle aus und beobachten Sie das Ergebnis. Wiederholen Sie das solange, bis die zweite Zeile wieder erscheint. Wenn Sie wollen, dann können Sie M-y mit positiven oder negativen Argumenten aufrufen, um direkt zu einem bestimmten Eintrag im Löschring zu kommen. Unter dem X Window System besteht auch die Möglichkeit, mit der linken Maustaste einen Textteil zu markieren (er erscheint dann normalerweise grau unterlegt). Der Befehl C-w löscht diesen markierten Textteil (in Emacs auch Region genannt) und fügt ihn in den Löschring ein. Dasselbe geht auch ohne Maus: bewegen Sie den Cursor zum Beginn des zu löschenden Textteils, drücken Sie C-SPC, um eine Markierung für den Beginn einer Region zu setzen, gehen Sie dann zum Ende des zu löschenden Textes und drücken Sie C-w. Der lange Name für C-w ist kill-region (weiter unten wird erklärt, wie man Befehle mit langen Namen ausführen kann). * UNDO ------ Wenn Sie etwas am Text geändert haben und nachträglich bemerken, daß das ein Fehler war, so können Sie den Fehler mit dem Befehl C-x u ungeschehen machen (`undo'). Normalerweise macht C-x u das Verhalten von einem Befehl ungeschehen; führen Sie C-x u mehrmals hintereinander aus, dann werden die jeweiligen vorigen Befehle widerrufen. Es gibt jedoch zwei Ausnahmen: Befehle, die den Text nicht ändern, werden nicht gezählt (z.B. Cursorbewegungen und Blättern im Text). Und Befehle, die sich selbst einfügen (`self-inserting': Drücken Sie zum Beispiel die `u'-Taste, dann wird der Buchstabe u eingefügt) werden in Gruppen von bis zu 20 Zeichen wiederhergestellt, um die Anzahl der notwendigen C-x u-Befehle zu reduzieren. >> Löschen Sie diese Zeilen mit C-k und drücken Sie anschließend mehrmals C-x u, und die Zeilen erscheinen wieder. C-_ ist ein alternativer Undo-Befehl; er arbeitet genauso wie C-x u, ist jedoch einfacher zu tippen, wenn Sie den Befehl mehrmals hintereinander ausführen möchten. Der Nachteil von C-_ ist, daß bei manchen Tastaturen nicht sofort einsichtig ist, wie man das eingibt. Eine weitere Eingabemöglichkeit bei vielen Terminals ist C-/. Ein numerisches Argument für C-_, C-x u oder C-/ wird als Wiederholungszähler interpretiert. Der Unterschied zwischen der Undo-Funktion und dem oben erklärten C-y ist, daß erstere gelöschten Text an exakt der gleichen Position wie vorher wiederherstellt, wohingegen C-y den gelöschten Text an der momentanen Cursorposition einfügt. Im übrigen kann auch `gekillter' Text wieder hergestellt werden; der Unterschied zwischen `killing' und `yanking' betrifft nur C-y, aber nicht die Undo-Funktion. * DATEIEN --------- Um editierten Text zu sichern, muß man ihn in einer Datei (`file') speichern (`save'). Wird Emacs beendet, ohne daß man vorher den Text gespeichert hat, dann ist der Text verloren. Will man andererseits bereits gesicherten Text mit Emacs editieren, so muß die entsprechende Datei in Emacs geladen werden (im Englischen wird das als `finding' (finden) bzw. als `visiting' (besuchen) bezeichnet). Eine Datei `finden' bedeutet, daß man den Inhalt dieser Datei mit Emacs bearbeitet -- es ist fast so, als ob man die Datei selbst editiert. Jedoch werden Änderungen an dieser Datei erst dann dauerhaft, wenn man sie speichert; auf diese Weise wird vermieden, daß Dateien in einem halb-geänderten Zustand im Betriebssystem bleiben. Es wird sogar die originale, unveränderte Datei unter einem anderen Namen gesichert, falls Sie später entscheiden sollten, daß die Änderungen ein Fehler sind. Wenn Sie die untere Bildschirmkante genauer betrachten, dann werden Sie eine Zeile finden, die mit einem oder mehreren Bindestrichen beginnt und endet; sie enthält unter anderem die Zeichenkette `TUTORIAL.de'. An dieser Position befindet sich immer der Name der Datei, die Sie momentan bearbeiten (`visit'). Gerade in diesem Augenblick bearbeiten Sie eine Datei mit dem Namen `TUTORIAL.de' (genauer gesagt, Emacs hat eine identische Kopie geladen). Die Befehle für das Laden und Speichern von Dateien bestehen aus zwei Zeichen: Beide beginnen mit CONTROL-x. Es gibt eine ganze Reihe von Kommandos, die mit C-x beginnen; viele von ihnen haben mit Dateien, Puffern (s.u.) und ähnlichem zu tun. All diese Befehle sind zwei, drei oder vier Zeichen lang -- Sie haben bereits C-x u kennengelernt. Um eine Datei in Emacs laden zu können, muß man dem Lade-Befehl den Namen der Datei mitteilen. Der Befehl `liest ein Argument vom Terminal' (in diesem Fall ist das der Name der Datei). Nachdem Sie C-x C-f (lade Datei) eingegeben haben, werden Sie von Emacs nach dem Dateinamen gefragt. Die Zeichen, die Sie eingeben, werden in der untersten Bildschirmzeile dargestellt, dem sogenannten Minipuffer (`minibuffer'). Sie können ganz normale Emacs-Editierfunktionen verwenden, um den Dateinamen zu ändern. Sie können jederzeit die Eingabe (auch von anderen Befehlen, die den Minipuffer benutzen) mit C-g abbrechen. >> Drücken Sie C-x C-f und dann C-g. Der letzte Befehl verwirft jegliche Eingabe in den Minipuffer und bricht außerdem den Ladebefehl ab (Sie haben also keine Datei geladen). Wenn Sie den Dateinamen fertig eingegeben haben, drücken Sie , um den Befehl abzuschließen; C-x C-f wird ausgeführt und lädt die von Ihnen ausgesuchte Datei. Der Minipuffer verschwindet wieder, sobald C-x C-f beendet ist. Ein paar Augenblicke später erscheint der Dateiinhalt auf dem Bildschirm, und Sie können den Text editieren. Wenn Sie Ihre Änderungen permanent speichern wollen, dann drücken Sie C-x C-s (sichere Datei) und Emacs kopiert den Text in die Datei. Beim ersten Mal benennt Emacs die Originaldatei um, damit sie nicht verloren ist. Der neue Name besteht aus dem Originalnamen plus einer angehängten Tilde `~' [unter einigen Betriebssystemen wird statt dessen die Namenserweiterung durch `.bak' ersetzt]. Emacs schreibt den Namen der gesicherten Datei in die unterste Zeile, sobald C-x C-s fertig ausgeführt ist. Sie sollten den editierten Text oft speichern, damit nicht allzuviel bei einem etwaigen Systemabsturz verloren geht. >> Geben Sie C-x C-s ein, um Ihre Kopie der Einführung zu sichern. Die Ausgabe am unteren Bildschirmrand sollte `Wrote ...TUTORIAL.de' sein. Sie können eine existierende Datei anschauen (`view') oder editieren. Sie können aber auch eine Datei laden, die noch gar nicht existiert, um so eine neue Datei zu erzeugen: Sie öffnen dazu die (nicht-existente) Datei, die natürlich leer ist, und beginnen dann einfach Text einzugeben. Wenn Sie jetzt die Datei speichern, erzeugt Emacs wirklich die Datei und kopiert den editierten Text in sie hinein. * PUFFER -------- Manche Editoren können nicht mehr als eine Datei gleichzeitig bearbeiten. Wenn Sie jedoch eine zweite Datei in Emacs mit C-x C-f laden, dann bleibt die erste in Emacs. Sie können zur ersten zurückschalten, indem Sie noch einmal C-x C-f eingeben. Auf diese Weise lassen sich eine ganze Reihe von Dateien laden und bearbeiten. >> Erzeugen Sie eine Datei mit dem Namen `foo', indem Sie C-x C-f foo eingeben. Tippen Sie etwas Text ein, editieren Sie ihn und speichern Sie ihn abschließend mit C-x C-s. Kehren Sie anschließend zu dieser Einführung zurück mit C-x C-f TUTORIAL.de Emacs speichert jeden Text, der aus einer Datei in Emacs geladen wird, in einem `Puffer'-Objekt. Um eine Liste der momentan existierenden Puffer zu sehen, geben Sie C-x C-b (liste Puffer auf) ein. >> Probieren Sie jetzt C-x C-b. Beachten Sie, daß jeder Puffer einen Namen hat und manche auch mit dem Namen einer Datei assoziiert sind, dessen Inhalt sie enthalten. Manche Puffer aber haben keinen zugehörige Datei, z.B. der mit dem Namen `*Buffer List*'. Er wurde von dem Befehl C-x C-b erzeugt, um die Pufferliste darzustellen. JEDER Text, den Sie innerhalb Emacs in einem Fenster sehen, ist immer ein Ausschnitt eines Puffers. >> Geben Sie jetzt C-x 1 ein, um die Pufferliste wieder verschwinden zu lassen. Wenn Sie Änderungen an einer Datei vornehmen und anschließend eine andere Datei laden, dann wird die erste nicht gespeichert. Die Änderungen bleiben in Emacs, und zwar in dem zur ersten Datei gehörigen Puffer. Das ist sehr praktisch, bedeutet jedoch gleichzeitig, daß man einen Befehl braucht, um den Puffer der ersten Datei permanent abzuspeichern. Es wäre äußerst umständlich, müßte man jedesmal C-x C-f eingeben, um den Puffer dann mit C-x C-s abzuspeichern. Daher gibt es den Befehl C-x s (sichere mehrere Puffer) Dieser Befehl fragt Sie bei jedem Puffer, der Änderungen enthält, ob Sie ihn speichern wollen. >> Fügen Sie eine Textzeile ein und drücken Sie dann C-x s. Emacs fragt Sie jetzt, ob Sie einen Puffer mit dem Namen TUTORIAL.de speichern wollen. Bejahen Sie, indem Sie `y' drücken. [Anmerkung: Sie verändern nicht die Originaldatei, sondern eine persönliche Kopie.] * WEITERE BEFEHLE ----------------- Es existieren viel mehr Emacs-Befehle als Tasten auf der Tastatur. Um sie trotzdem alle benutzen zu können, gibt es zwei Erweiterungen: C-x Zeichenerweiterung. Gefolgt von einem Zeichen. M-x Befehlserweiterung. Gefolgt von einem (langen) Namen. [Das `x' steht für das englische Wort `extension'.] Diese beiden Befehle sind prinzipiell sehr nützlich, werden aber weniger oft benötigt als die bisher vorgestellten. Sie haben bereits zwei Befehle aus der ersten Kategorie kennengelernt: C-x C-f, um eine Datei zu laden, und C-x C-s, um sie zu speichern. Ein weiteres Beispiel ist C-x C-c, um Emacs zu beenden -- Sie brauchen sich keine Gedanken zu machen, ob Sie beim Beenden von Emacs vielleicht vergessen haben, Daten oder Text zu sichern -- Emacs fragt bei jedem geändertem Puffer (bzw. Datei), ob er gespeichert werden soll. C-z ist der Befehl um Emacs *zeitweise* zu verlassen; es ist also möglich, später an der unterbrochenen Stelle nahtlos weiterzuarbeiten. Auf den meisten Systemen wie Linux oder FreeBSD wird Emacs `suspendiert', wenn Sie C-z drücken, d.h., Sie kehren zurück zur Eingabezeile des Betriebssystems, ohne Emacs zu beenden. In der Regel können Sie dann mittels des Befehls `fg' bzw. `%emacs' wieder zu Emacs umschalten. Unter X Window System bewirkt C-z in der Regel, daß Emacs ikonofiziert wird, also als Ikone (`Icon') darauf wartet, mit einem Mausklick bei Bedarf wieder vergrößert zu werden. Bei Betriebssystemen bzw. Shells, die Suspension von Programmen nicht implementiert haben (z.B. MS-DOS), startet C-z einen System-Befehlsinterpreter innerhalb von Emacs (`subshell'). Normalerweise müssen Sie dann `exit' in die Befehlszeile schreiben, um zu Emacs zurückzukehren. Der beste Zeitpunkt für C-x C-c ist, wenn Sie sich ausloggen (bzw. Ihren Computer ausschalten); Sie sollten Emacs ebenfalls beenden, wenn Sie Emacs von einem anderen Programm aus aufgerufen haben (z.B. einem Programm, das E-mails liest), da solche Programme oft nicht wissen, wie sie mit Emacs im Suspend-Modus umgehen sollen. In allen anderen Fällen ist es meistens günstiger, C-z zu benutzen und Emacs nicht zu beenden, damit man im Bedarfsfalle sofort an der gleichen Stelle weiterarbeiten kann. Hier ist eine Liste aller C-x-Befehle, die Sie bereits kennengelernt haben: C-x C-f lade Datei C-x C-s sichere Datei C-x C-b zeige Pufferliste an C-x C-c beende Emacs C-x u widerrufen C-x 1 lösche alle Fenster außer eines Ein Beispiel für einen Befehl mit langen Namen ist replace-string, der global (also in der ganzen Datei bzw. Puffer) eine Zeichenkette durch eine andere ersetzt. Wenn Sie M-x drücken, dann fragt Sie Emacs in der untersten Bildschirmzeile nach dem Namen des Befehls (in diesem Fall `replace-string'). Geben Sie jetzt `repl s' ein und Emacs vervollständigt den Namen. Schließen Sie die Eingabe mit ab. [ bezeichnet die Tabulatortaste.] >> Bewegen Sie den Cursor zu der leeren Zeile sechs Zeilen unter dieser. Geben Sie dann M-x repl sBildschirmText ein und kehren Sie mit C-u C-SPC an diese Position zurück. Beachten Sie wie diese Bildschirmzeile jetzt aussieht: Sie haben den Wortteil B-i-l-d-s-c-h-i-r-m durch `Text' ersetzt (und zwar im ganzen Dokument beginnend von der Cursorposition). >> Drücken Sie jetzt C-x u, um diese Änderungen auf einmal rückgängig zu machen. * AUTOMATISCHES SPEICHERN ------------------------- Haben Sie Änderungen an einem Dokument vorgenommen, sie jedoch nicht gespeichert, dann können sie verloren gehen, falls der Computer abstürzt. Um Sie davor zu schützen, sichert Emacs in bestimmten Zeitintervallen jede von Ihnen editierte Datei in sogenannten `auto-save'-Dateien. Sie sind daran zu erkennen, daß sie mit einem # beginnen und enden; z.B. ist `#hello.c#' der Name der Auto-save-Datei von `hello.c'. Wenn Sie Ihren Text auf normalem Wege speichern, wird die Auto-save-Datei gelöscht. Stürzt der Rechner einmal wirklich ab, so können Sie die Änderungen, die beim letzten Auto-Save gespeichert worden sind, folgendermaßen wiederherstellen: Laden Sie die Datei auf normalem Wege (die Datei, die Sie bearbeitet haben, nicht die Auto-save-Datei) und geben Sie dann `M-x recover-file' ein. Wenn Emacs Sie um Bestätigung fragt, antworten Sie mit `yes', um den Inhalt der Auto-save-Datei zu übernehmen. * DER ECHO-BEREICH ------------------ Geben Sie Befehle langsam ein, dann zeigt Ihnen Emacs Ihre eigene Eingabe am unteren Bildschirmrand im sogenannten Echo-Bereich (`echo area'). Der Echo-Bereich enthält die unterste Bildschirmzeile. [Mini-Puffer und Echo-Bereich fallen normalerweise zusammen, sind aber nicht das gleiche, da innerhalb des Echo-Bereiches nichts eingegeben werden kann.] * DIE STATUSZEILE ------------------ Die Bildschirmzeile unmittelbar über dem Echo-Bereich ist die Statuszeile (`mode line'). Sie schaut ungefähr so aus: -1:** TUTORIAL.de 58% L865 (Fundamental)---------------------- Diese Zeile gibt nützliche Hinweise über den momentanen Zustand von Emacs und den Text, den Sie gerade editieren. Sie wissen bereits, was der Dateiname bedeutet. `--NN%--' zeigt die momentane Position innerhalb des Textes an: NN Prozent davon sind oberhalb des Bildschirms. Ist der Dateianfang zu sehen, dann erscheint `Top' anstelle von `00%'. Analog dazu erscheint `Bot' (für das englische Wort `bottom'), wenn das Dateiende sichtbar ist. Wenn Sie einen Text betrachten, der komplett auf den Bildschirm paßt, dann erscheint `All'. Das `L' und die nachfolgenden Ziffern geben die aktuelle Zeilennummer an, in denen sich der Cursor befindet. Am Anfang der Zeile sehen Sie `-1:**'. Die Zeichen vor dem Doppelpunkt geben an, in welcher Kodierung der Text ist und welche Eingabemethode verwendet wird. Dazu mehr weiter unten im Abschnitt `MULE'. [Anstelle des Doppelpunktes können auch ein `\' und `/' stehen, falls Sie Dateien editieren, die der MS-DOS- bzw. der Macintosh-Textkonvention folgen: MS-DOS verwendet als Zeilenvorschubzeichen CR-LF (Carriage Return gefolgt von Linefeed), während Macintosh nur CR benutzt. Emacs verwendet standardmäßig LF.] Die Sterne nach dem Doppelpunkt bedeuten, daß Sie Änderungen am Text vorgenommen haben. Wenn Sie gerade eine Datei in Emacs geladen oder gespeichert haben, dann erscheinen statt der Sterne zwei Bindestriche. Prozentzeichen nach dem Doppelpunkt stehen für eine Datei, die nur gelesen, aber nicht editiert werden kann. Der eingeklammerte Teil gibt an, in welchem Editiermodus Sie sich befinden. Der Standardmodus heißt `Fundamental' (Sie verwenden ihn gerade); er ist ein Beispiel für einen Hauptmodus (`major mode'). Emacs hat viele Hauptmodi implementiert. Manche davon werden für verschiedene (Computer-)Sprachen und/oder Textarten verwendet, z.B. Lisp-Modus, Text-Modus usw. Es kann immer nur ein Hauptmodus aktiviert sein, und der Name befindet sich dort, wo jetzt gerade `Fundamental' steht. Einige Befehle verhalten sich jeweils in verschiedenen Hauptmodi anders. Es gibt zum Beispiel einen Befehl, um einen Kommentar in den Quellcode eines Computerprogramm einzufügen -- die Tastenfolge dafür ist zwar (in der Regel) die gleiche, doch wird ein Kommentar mit der für die aktuelle Programmiersprache gültigen Syntax eingefügt (z.B. `// ...' für ein Programm in C++ oder `; ...' für Lisp). Um in einen Hauptmodus zu schalten, hängen Sie einfach das englische Wort `-mode' an den (kleingeschriebenen) Namen des Modus an und führen den Befehl mittels M-x aus. Beispiel: `M-x fundamental-mode' schaltet in den Fundamental-Modus. Weitere wichtige Modi sind c-mode, perl-mode, lisp-mode, text-mode u.a. Die meisten davon werden automatisch aktiviert, und zwar entsprechend der Namenserweiterung der zu ladenden Datei: So wird z.B. durch das Laden der Datei foo.c automatisch der C-Modus aktiviert. Wenn Sie deutschen oder englischen Text bearbeiten, dann sollten Sie den Textmodus verwenden. [Falls Ihre Tastatur keine Umlaut-Tasten hat, müssen Sie noch einen weiteren Nebenmodus aktivieren. Lesen Sie dazu den Abschnitt `MULE' weiter unten.] >> Geben Sie `M-x text mode' ein. Sie brauchen keine Angst zu haben, daß sich die bisher dargestellte Tastaturbelegung von Emacs stark ändert. Beobachten Sie z.B. die Befehle M-f und M-b: Apostrophe werden nun als Teil eines Wortes betrachtet (wie man's leicht an diesem Beispiel ausprobieren kann), wohingegen im Fundamentalmodus Apostrophe als Worttrenner (`word-separator') behandelt werden. Normalerweise ist das eben genannte Beispiel die Methode von Hauptmodi: Die meisten Befehle tun `das gleiche', arbeiten aber jeweils ein bißchen anders. Dokumentation zum derzeit aktuellen Hauptmodus bekommen Sie mit C-h m. >> Drücken Sie C-u C-v ein- oder mehrmals, um diese Zeile in die Nähe des oberen Bildschirmrands zu bringen. >> Lesen Sie nun mittels C-h m die englische Dokumentation zum Textmodus. >> Entfernen Sie schließlich das Dokumentationsfenster mit C-x 1. Neben den Hauptmodi gibt es auch Nebenmodi (`minor modes'). Nebenmodi sind keine Alternativen zu Hauptmodi, sondern stellen Ergänzungen zur Verfügung, die (normalerweise) in allen Hauptmodi funktionieren (z.B. der Überschreibmodus: Zeichen werden nicht eingefügt, sondern überschreiben den Text). Man kann Nebenmodi ein- und ausschalten unabhängig von anderen Nebenmodi und Hauptmodi; mit anderen Worten, Sie können zu Ihrem Hauptmodus keinen, einen oder sogar mehrere Nebenmodi haben. Ein Nebenmodus, welcher äußerst nützlich ist, besonders für das Editieren von Text, ist der automatische Zeilenumbruch (`Auto Fill mode'). Ist dieser Modus aktiviert, dann bricht Emacs die laufende Zeile selbsttätig zwischen Wörtern um, sobald sie zu lang wird. Sie können den Zeilenumbruchmodus einschalten mittels `M-x auto fill mode'. Wenn der Modus aktiviert ist, können Sie ihn mit dem gleichen Befehl wieder ausschalten. Mit anderen Worten, der Befehl verhält sich wie ein Lichttaster, der bei Betätigung entweder das Licht ein- oder ausschaltet, je nachdem, ob das Licht vorher ausgeschaltet bzw. eingeschaltet war. Wir sagen, daß dieser Befehl den Modus umschaltet (`toggle'). >> Geben Sie nun M-x auto-fill-mode ein. Fügen Sie anschließend eine Zeile ein, die aus lauter `asdf ' besteht, und zwar so lange, bis die Zeile automatisch umgebrochen wird. Vergessen Sie nicht, Leerzeichen einzugeben, da nur dort ein Umbruch erfolgt. Normalerweise ist die maximale Zeilenlänge 70 Zeichen (d.h., der linke Rand ist ganz links auf Position 1 und der rechte Rand auf Position 70), jedoch können Sie das mit dem Befehl C-x f ändern. Geben Sie den neuen (rechten) Rand als numerischen Parameter ein. >> Geben Sie C-x mit dem Argument 20 ein (C-u 2 0 C-x f). Schreiben Sie nun etwas Text und beobachten Sie, wie Emacs die laufende Zeile an Position 20 umbricht. Setzen Sie anschließend den Rand wieder zurück auf 70 mit dem gleichen Befehl. Machen Sie Änderungen in der Mitte eines Absatzes, dann reformatiert der Zeilenfüllmodus nicht automatisch den Absatz. Verwenden Sie dafür den Befehl M-q, wobei der Cursor innerhalb des Absatzes stehen muß. >> Bewegen Sie den Cursor zurück zum letzten Absatz und drücken Sie M-q. * SUCHEN -------- Emacs kann Zeichenketten (`strings') entweder in Richtung Pufferende (vorwärts, `forward') oder in Richtung Pufferanfang (rückwärts, `backward') suchen. Gleichzeitig wird der Cursor an die nächste Stelle bewegt, wo diese Zeichenkette erscheint. Hier unterscheidet sich Emacs von vielen anderen Editoren, da nämlich die Standard-Suchoperation inkrementelles Suchen ist, d.h., die Suche beginnt dann, wenn Sie die Zeichen eingeben. Der Befehl für Vorwärtssuchen ist C-s und C-r für Rückwärtssuchen. ABER HALT! Probieren Sie bitte diese Befehle noch nicht. Wenn Sie C-s eingeben, dann erscheint die Zeichenkette `I-search:' als Eingabeaufforderung im Echobereich. Das bedeutet, daß Emacs jetzt eine inkrementellen Suche ausführt und darauf wartet, daß Sie die zu suchende Zeichenkette eingeben. beendet die Suche. >> Geben Sie jetzt C-s ein, um einen Suchvorgang zu starten. Schreiben Sie LANGSAM, einen Buchstaben nach dem anderen, das Wort `Cursor', und warten Sie jeweils ab, was mit dem Cursor passiert. Sie haben jetzt das Wort `Cursor' einmal gefunden. >> Drücken Sie C-s noch einmal, um die nächste Stelle zu suchen, wo das Wort `Cursor' vorkommt. >> Drücken Sie nun viermal und beobachten Sie, wie der Cursor zurückspringt. >> Beenden Sie die Suche mit . Verstehen Sie, was gerade vorgegangen ist? Emacs versucht während einer inkrementellen Suche zu der Stelle zu gehen, wo die Zeichenkette steht, die Sie bis jetzt eingegeben haben. Um die darauffolgende Position zu suchen, wo `Cursor' steht, genügt es, noch einmal C-s zu betätigen. Wenn es keine nächste Position gibt, dann ertönt ein kurzer Ton, und Emacs sagt Ihnen, daß die Suche im Augenblick fehlschlägt (`failing'). C-g beendet ebenfalls einen Suchvorgang. Wenn Sie sich mitten in einer inkrementellen Suche befinden und drücken, wird das letzte Zeichen im Suchstring gelöscht, und der Cursor springt zurück auf die letzte Suchposition. Angenommen, Sie haben `c' eingegeben, um das erste Auftreten von `c' zu suchen. Geben Sie jetzt `u' ein, dann springt der Cursor zu dem ersten Auftreten der Zeichenkette `cu'. Wenn Sie jetzt mit das `u' vom Suchstring löschen, dann springt der Cursor zurück zum ersten `c'. Drücken Sie dagegen ein paar mal C-s, um weitere `cu'-Zeichenketten zu finden, dann bewirkt , daß Sie zum letzten Auftreten von `cu' zurückspringen, und erst wenn es kein weiteres `cu' mehr gibt, springt der Cursor zum ersten `c' zurück. Die Suche wird ebenfalls beendet, wenn Sie ein CONTROL- oder META-Zeichen eingeben (mit ein paar Ausnahmen -- Zeichen, die bei einer Suche speziell gehandhabt werden wie C-s oder C-r). C-s versucht, die Zeichenkette NACH der aktuellen Cursorposition zu finden. Wollen Sie etwas davor suchen, müssen Sie C-r verwenden. Das oben Gesagte gilt völlig analog, jedoch in die entgegengesetzte Suchrichtung. * MEHRFACHE FENSTER ------------------- Eine weitere, nützliche Fähigkeit von Emacs ist die Möglichkeit, mehr als ein Fenster zur gleichen Zeit auf dem Bildschirm darzustellen. >> Bewegen Sie den Cursor zu dieser Zeile und geben Sie C-u 0 C-l ein. >> Drücken Sie nun C-x 2, um den Bildschirm in zwei Fenster zu teilen. Beide Fenster zeigen diese Einführung an, und der Cursor bleibt im oberen. >> Verwenden Sie C-M-v, um im unteren Fenster zu blättern (Sie können statt dessen auch ESC C-v verwenden, falls Sie keine META-Taste haben; siehe auch weiter unten). >> Mittels C-x o (das `o' steht für das englische Wort `other', `das andere') können Sie den Cursor in das untere Fenster bewegen. >> Benützen Sie C-v und M-v, um im unteren Fenster zu blättern. Lesen Sie die Emacs-Einführung jedoch im oberen Fenster weiter. >> Geben Sie C-x o nochmals ein, und der Cursor ist wieder im oberen Fenster, genau an der Stelle, wo er vorher war. C-x o ist der Befehl, um zwischen (Emacs-)Fenstern hin- und herzuschalten. Jedes Fenster hat eine eigene Cursorposition, aber nur das aktuelle Fenster zeigt den Cursor an (unter X wird die nicht-aktuelle Cursorposition durch ein leeres Rechteck dargestellt). Alle normalen Editierbefehle betreffen das Fenster, in dem sich der Cursor befindet. Wir nennen dieses Fenster `selektiert' (`selected window'). Der Befehl M-C-v ist sehr nützlich, wenn man Text in einem Fenster editiert und das andere Fenster als Referenz verwendet. Der Cursor bleibt stets im gleichen Arbeitsfenster, und mit M-C-v kann man bequem vorwärtsblättern. M-C-v ist ein Beispiel eines CONTROL-META-Zeichens. Haben Sie eine META-Taste, dann kann man M-C-v erzeugen, indem man CTRL und META gleichzeitig niedergedrückt hält, während man v eintippt. Es ist egal, ob zuerst CTRL oder META niedergedrückt wird, da beide Tasten gleichberechtigt das jeweils einzugebende Zeichen modifizieren. Haben Sie keine META-Taste, und Sie verwenden stattdessen ESC, dann ist die Reihenfolge nicht mehr egal: Sie müssen zuerst ESC drücken, gefolgt von CTRL-v. CTRL-ESC v funktioniert nicht! Der Grund dafür ist, daß ESC ein eigenes Zeichen ist und keine Modifizier-Taste wie META oder CTRL. Der umgekehrte Befehl zu M-C-v ist M-C-S-v, um im anderen Fenster rückwärts zu blättern (d.h., Sie müssen die META-Taste sowie die CONTROL- und SHIFT-Taste zusammen mit `v' betätigen) -- jetzt werden Sie wahrscheinlich verstehen, warum manche Kritiker das Wort Emacs als Abkürzung von Escape-Meta-Alt-Control-Shift betrachten. Leider funktioniert diese Befehlsfolge normalerweise nur mit dem X Window System, da C-v von C-S-v auf den meisten Textterminals nicht unterschieden werden kann. [Unter X kann man außerdem in der Regel mit den bequemeren Tastenkombinationen META-`Bild mit Aufwärtspfeil' bzw. META-`Bild mit Abwärtspfeil' ebenfalls im anderen Fenster rück- bzw. vorwärts blättern.] >> Entfernen Sie mit C-x 1 (eingegeben im oberen Fenster) das untere Fenster. (Hätten Sie C-x 1 im unteren Fenster eingegeben, dann wäre das obere Fenster geschlossen worden -- eine Eselsbrücke für C-x 1 ist `ich will nur das *eine* Fenster, in dem ich mich gerade befinde.') Sie müssen nicht den gleichen Puffer in beiden Fenstern darstellen. Wenn Sie C-x C-f verwenden, um in einem Fenster eine Datei zu laden, dann bleibt das andere Fenster unverändert. Sie können in jedem Fenster eine andere Datei anzeigen lassen, unabhängig vom anderen Fenster. Hier eine andere Möglichkeit, in zwei Fenstern zwei verschiedene Texte darzustellen: >> Geben Sie C-x 4 C-f ein, gefolgt vom Namen einer Ihrer Dateien. Schließen Sie ab mit . Beobachten Sie, wie die spezifizierte Datei im unteren Fenster erscheint. Der Cursor springt ebenfalls in das untere Fenster. >> Bewegen Sie den Cursor mittels C-x o in das obere Fenster und geben Sie C-x 1 ein, um das untere Fenster zu schließen. * REKURSIVE EDITIER-EBENEN -------------------------- Manchmal kann es passieren, daß Sie in eine sogenannte rekursive Editier-Ebene geraten (`recursive editing level'). Sie können das an den eckigen Klammern in der Statuszeile erkennen, welche den derzeitigen Hauptmodus zusätzlich umschließen, z.B. [(Fundamental)] anstelle von (Fundamental). Um eine rekursive Editier-Ebene zu verlassen, geben Sie ESC ESC ESC ein. Diese Tastenkombination ist ein allgemeiner Ich-will-hier-raus-Befehl. Sie können ihn auch verwenden, um unerwünschte Fenster zu schließen und den Minipuffer zu verlassen. >> Geben Sie M-x ein, um in den Minipuffer zu gelangen, und tippen Sie dann ESC ESC ESC, um ihn wieder zu verlassen. Mit C-g kann man eine rekursive Editier-Ebene nicht verlassen, da C-g Befehle INNERHALB einer rekursiven Editier-Ebene stoppt. Rekursive Editier-Ebenen sind hier in dieser Einführung nicht weiter dargestellt. Details finden Sie im Emacs-Handbuch beschrieben. * MULE ------ Mule ist die Abkürzung für `Multi-lingual Enhancement to GNU Emacs'. Früher wurde damit eine spezielle Emacs-Variante bezeichnet, die allerdings seit der Version 20 mit Emacs verschmolzen ist. Emacs unterstützt eine große Anzahl von internationalen Zeichensätzen, z.B. verschiedene europäische Varianten des lateinischen Alphabets, Chinesisch, Russisch oder Thai, um nur einige zu nennen. In dieser Einführung wird jedoch nur auf den deutschen Zeichensatz sowie Eingabemöglichkeiten für Deutsch näher eingegangen. Der Standard-Zeichensatz für Deutsch ist Latin-1 (auch bekannt unter dem Namen ISO-8859-1). Wenn anstelle der deutschen Umlaute unansehnliche Konstrukte wie `\201ä' dargestellt werden, dann ist die sogenannte Multibyte-Zeichenunterstützung deaktiviert (intern werden in Emacs nicht-ASCII Zeichensätze durch mehr als ein Byte repräsentiert). Durch den Befehl `M-x toggle-enable-multibyte-characters' wird die Multibyte-Zeichenunterstützung aktiviert. Denken Sie daran, die Tabulatortaste zur Vervollständigung von Befehlsnamen zu benützen, z.B. `M-x toggle-e'. Wenn anstelle der Umlaute `ä', `ö' oder `ü' die Zeichen `d', `v' und `|' erscheinen (also `kleines D', `kleines V' und ein senkrechter Strich), dann wird das achte Bit von jedem Byte abgeschnitten, sodaß nur ASCII-Zeichen dargestellt werden können. In der Regel gibt es zwei Ursachen für dieses Problem: Sie haben sich nicht `8-bit clean' (z.B. mittels `telnet -8 ...') eingeloggt oder Ihr Telekommunikationsprogramm ist nicht für 8-bit konfiguriert. >> Geben Sie `M-x toggle-enable-multibyte-characters' ein. Die deutschen Umlaute (so sie von Ihrem Terminal darstellbar sind) verschwinden und werden durch Zahlenkonstrukte ersetzt. So wird zum Beispiel Umlaut a (`ä') dargestellt als `\201ä'. >> Aktivieren Sie wieder die Multibyte-Zeichenunterstützung mittels `M-x toggle-enable-multibyte-characters'. Sehen Sie anstelle der Umlaute leere Kästchen (unter X), dann sollten Sie mit C-x C-c Emacs beenden und folgendermaßen neu starten: emacs -fn fontset-standard Bei einem Textterminal gibt es weiter die Möglichkeit, die Befehlsfolge `M-x standard-display-european' auszuführen, wodurch Emacs die Multibyte-Zeichenunterstützung deaktiviert und direkt Latin-1-Zeichen darzustellen versucht. Sie können auch probieren, Emacs mit der `--unibyte'-Option zu starten, was einen ähnlichen Effekt bewirkt. Falls das alles nichts nützt oder Sie Fragezeichen anstelle der Umlaute auf ihrem Textterminal sehen, sollten Sie sich an Ihren Systemadministrator wenden und sich beschweren, daß kein Latin-1-Zeichensatz installiert ist (was heutzutage eigentlich eine Selbstverständlichkeit sein sollte). Falls statt der Umlaute andere Zeichen auf ihrem Textterminal erscheinen (z.B. kyrillische Buchstaben), dann erkundigen Sie sich, wie sie auf Latin-1 umschalten können. Lesen Sie im Emacs-Handbuch nach unter dem Stichwort `International', welche weitere Optionen es bezüglich Zeichensätze gibt. Es empfiehlt sich, Latin-1 als Standardkodierung zu aktivieren, wenn Sie primär Deutsch verwenden. Benutzen Sie zu diesem Zweck die Befehlsfolge C-x l latin-1 (C-x l führt die Funktion set-language-environment aus), um in einer laufenden Emacs-Sitzung auf Latin-1 umzuschalten. Dadurch wird erreicht, daß Emacs beim Laden einer Datei (und Speichern derselben) standardmäßig die Latin-1-Zeichenkodierung verwendet. Sie können an der Ziffer 1 unmittelbar vor dem Doppelpunkt links unten in der Statuszeile erkennen, daß Sie Latin-1 aktiviert haben. Beachten Sie allerdings, daß set-language-environment keinen Einfluß auf die Kodierung bereits existierender Puffer hat! Haben Sie eine Datei mit deutschem Text in Latin-1-Kodierung irrtümlicherweise in einer falschen Kodierung geladen, dann müssen Sie diesen Puffer aus Emacs mit dem Befehl C-x k (kill-buffer) entfernen und die Datei erneut laden, nachdem Sie mit set-language-environment auf Latin-1 umgeschaltet haben. >> Führen Sie jetzt C-x l latin-1 aus und öffnen Sie anschließend eine (neue) Datei mit dem Namen `bar' in einem anderen Fenster mittels C-x 4 C-f bar . In der Statuszeile des zweiten Fensters sehen Sie die Ziffer 1 unmittelbar vor dem Doppelpunkt. >> Schließen Sie das soeben geöffnete Fenster mit C-x 1 wieder. Wie können Sie nun deutsche Umlaute eingeben? Es gibt prinzipiell zwei unterschiedliche Fälle: Sie besitzen eine deutsche Tastatur mit Tasten für die Umlaute oder Sie haben eine nicht-deutsche Tastatur. Im ersteren Fall sollten Sie die Eingabemethode `german' auswählen, welche direkt die Umlaute auf die entsprechenden Tasten abbildet. Im letzteren Fall gibt es mehrere Möglichkeiten, wovon zwei hier erklärt werden sollen, nämlich `latin-1-prefix' und `latin-1-postfix'. Die Präfix-Methode erwartet zuerst den Akzent und dann den Basisbuchstaben ('a wird zu á, "s zu ß etc.), während bei der Postfix-Methode zuerst der Basisbuchstabe und dann der Akzent einzugeben ist (a" wird zu ä, s/ wird zu ß etc). Aktiviert wird die jeweilige Eingabe mit dem Befehl C-u C-\ Eingabemethode (z.B. C-u C-\ german ). Durch diese Befehlsfolge wird der sogenannte Quail-Nebenmodus aktiviert, was sich durch eine kleine Veränderung in der Statuszeile zeigt: Durch zwei oder drei Zeichen unmittelbar vor der Pufferkodierung wird die aktuelle Eingabemethode angezeigt. Ist der Eingabemodus einmal gewählt, kann man mit C-\ ihn ein- und ausschalten. >> Geben Sie C-u C-\ latin-1-postfix ein. Beobachten Sie, wie links unten in der Statuszeile die Anzeige von `1:**' auf `1<1:**' springt. Probieren Sie ä einzugeben mittels a". >> Deaktivieren Sie den Eingabemodus wieder mit C-\. Folgende Kürzel in der Statuszeile repräsentieren die eben beschriebenen Eingabemethoden: DE@ german 1< latin-1-postfix 1> latin-1-prefix So bedeutet die Angabe `DE@1:**', daß Sie die Eingabemethode `german' in einem Puffer mit Latin-1-Kodierung verwenden, und daß die Datei bereits modifiziert wurde. [Arbeitet Emacs in einem Terminal, werden noch zwei zusätzliche Spalten zwischen Eingabemethode und Pufferkodierung eingefügt, und zwar für die Tastatur- und Bildschirmkodierung.] * WEITERE DOKUMENTATION VON EMACS --------------------------------- Wir haben uns bemüht, in dieser Einführung genau soviel Information zu geben, daß Sie beginnen können, mit Emacs zu arbeiten. Emacs ist jedoch so mächtig und umfangreich, daß es den Rahmen einer Einführung spränge, an dieser Stelle mehr zu erklären. Um Sie im weiteren Lernverlauf zu unterstützen, stellt Emacs eine Reihe von Hilfe-Funktionen zu Verfügung, die alle mit dem Präfix C-h (dem Hilfe-Zeichen, `Help character') beginnen. Nach dem Drücken von C-h geben Sie ein weiteres Zeichen ein, um Emacs zu sagen, worüber Sie mehr Informationen brauchen. Sollten Sie WIRKLICH verloren sein, geben Sie C-h ? ein, und Emacs sagt Ihnen, welche Art von Hilfe er Ihnen zu Verfügung stellen kann. Haben Sie C-h versehentlich gedrückt, können Sie mit C-g sofort abbrechen. (Es kann vorkommen, daß bei manchen Computern bzw. Terminals C-h etwas anderes bedeutet. Da erfahrungsgemäß C-h eine der meistbenötigten Emacs-Befehle ist, haben Sie einen wirklichen Grund, sich in diesem Fall beim Systemadministrator zu beschweren. Alternativen zu C-h sind die F1-Taste und der lange Befehl M-x help .) Die elementarste Hilfestellung gibt C-h c. Drücken Sie C-h, dann das Zeichen c, und dann einen Befehl: Emacs zeigt daraufhin eine kurze Beschreibung des Befehls an. >> Geben Sie C-h c C-p ein. Die Antwort darauf (im Echo-Bereich) sollte so ähnlich sein wie C-p runs the command previous-line Somit wissen Sie den `Namen der Funktion'. Funktionsnamen werden hauptsächlich benutzt, um Emacs anzupassen bzw. zu erweitern. Aber da Namen in der Regel beschreiben, was die jeweilige Funktion tut, können sie auch als sehr kurze Beschreibung dienen -- ausreichend, um Sie an Befehle zu erinnern, die Sie bereits gelernt haben. Aus mehr als einem Zeichen bestehende Befehle, z.B. C-x C-s oder v, sind ebenfalls erlaubt nach C-h c. Um eine detaillierte Dokumentation eines Befehls zu erhalten, verwenden Sie C-h k anstelle von C-h c. >> Geben Sie C-h k C-p ein. Diese Befehlsfolge zeigt die komplette Dokumentation des Befehls an zusammen mit seinem Namen, und zwar in einem eigenem Fenster. Wenn Sie die Beschreibung gelesen haben, benützen Sie am besten C-x 1, um das Hilfe-Fenster wieder zu schließen. Sie müssen das nicht sofort tun -- Sie können weiter Text editieren und das Fenster schließen, wenn Sie es nicht mehr brauchen. Hier einige weitere nützliche Optionen von C-h: C-h f Beschreibt eine Funktion. Sie müssen den Namen der Funktion eingeben. >> Probieren Sie C-h f previous-line. Alle Information über den C-p-Befehl wird angezeigt. Sie können die Tabulator-Taste stets benützen, um den Namen des jeweiligen Befehls zu vervollständigen. Geben Sie z.B. `C-h f previous' ein, dann werden alle Befehle angezeigt, deren Namen mit `previous-' beginnen. Ergänzen Sie die Zeichenkette auf `previous-l' und drücken Sie dann , bleibt nur noch der Befehl `previous-line' übrig, und Sie können mit abschließen. Ein ähnlicher Befehl ist C-h v. Er zeigt den Wert und die Dokumentation von Variablen, deren Werte man ändern kann (um Emacs an persönliche Bedürfnisse anzupassen). Auch hier kann man die Tabulator-Taste zur Vervollständigung benutzen. C-h a Ein Befehls-Apropos. Gibt man ein Schlüsselwort ein, dann zeigt Emacs alle Befehle, die dieses Schlüsselwort enthalten. Alle angezeigten Befehle können mit M-x aufgerufen werden. Für einige Kommandos wird zusätzlich eine Zeichensequenz (meistens bestehend aus einem oder zwei Zeichen) aufgelistet, welche den gleichen Befehl startet. >> Geben Sie C-h a file ein. Alle M-x-Befehle, die das Wort `file' in ihrem Namen enthalten, werden angezeigt. Beachten Sie, daß auch C-x C-f aufgelistet wird neben dem zugehörigen langen Namen, find-file. >> Blättern Sie mit C-M-v, um sich die Liste der Funktionen anzusehen. >> Schließen Sie das Hilfefenster mit C-x 1. C-h i Dieser Befehl öffnet einen speziellen Puffer, um Online-Handbücher zu lesen (im `Info'-Format), die auf dem verwendeten Computersystem installiert sind. Geben Sie z.B. m emacs ein, um das Emacs-Handbuch zu lesen. Haben Sie `Info' noch nie benutzt, tippen Sie ?, und Emacs führt Sie Schritt für Schritt durch die Möglichkeiten des Info-Modus. Wenn Sie diese Einführung fertiggelesen haben, sollten Sie das Info-Handbuch für Emacs als primäre Dokumentation benutzen. * SCHLUSSBEMERKUNG ------------------ Das Wichtigste: Emacs wird mit C-x C-c beendet und mit C-z temporär unterbrochen. Diese Einführung soll für alle neuen Benutzer von Emacs verständlich sein. Wenn daher etwas unklar sein sollte, dann hadern Sie nicht mit sich selbst. Schreiben Sie an die Free Software Foundation oder an den Autor und erläutern Sie, was für Sie unklar geblieben ist. Eine weitere Kontaktadresse ist die Mailing-Liste `de@li.org', in der Probleme mit der Adaption von GNU-Programmen an das Deutsche diskutiert werden. * RECHTLICHES ------------- Die englische Version dieser Einführung hat eine lange Vorgeschichte. Stuart Cracraft hat für die Urversion von Emacs das erste Tutorial geschrieben. Übersetzer ins Deutsche ist Werner Lemberg (wl@gnu.org). Beachten Sie bitte, daß im Zweifelsfalle das englische Original dieser Urheberrechtsnotiz gültig ist (zu finden in der Datei TUTORIAL). Copyright (C) 1985, 1996, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. Hiermit wird für jedermann die Erlaubnis erteilt, wörtliche, unveränderte Kopien dieses Dokumentes für jegliches Medium zu erstellen, unter der Voraussetzung, daß die Copyright-Notiz sowie diese Erlaubnis beibehalten werden. Außerdem muß der Verteiler dieses Dokuments den Empfängern die gleichen Rechte einräumen, welche durch diese Erlaubnis gegeben sind. Zugleich wird die Erlaubnis erteilt, modifizierte Versionen dieses Dokuments, oder Teile davon, zu verteilen, und zwar zu den oben gegebenen Bedingungen unter der Voraussetzung, daß eindeutig zu erkennen ist, wer zuletzt dieses Dokument verändert hat. Die Vervielfältigungsbedingungen für Emacs selbst sind etwas komplexer, folgen aber in etwa den gleichen Richtlinien. Lesen Sie bitte die Datei COPYING und geben Sie Emacs an Ihre Freunde weiter! Helfen Sie mit, die Idee von freier Software zu propagieren, indem Sie freie Software verwenden, verteilen, oder sogar selber schreiben. --- end of TUTORIAL.de --- ;;; Local Variables: ;;; coding: latin-1 ;;; End: ;;; arch-tag: a8f2fe06-631d-4ae1-887e-446f971b0baa