Einführung
Emacs ist weit mehr als nur ein Editor, nicht umsonst widme ich diesem Tool einen eigenen Workshop. Das Programm eignet sich nicht nur zur Bearbeitung von Texten, sondern auch als komplette Entwicklungsumgebung für Programmierer, als E-Mail-Programm, als Newsreader.
Wenn Sie unter Linux viel Text - sei es nun normaler oder Source-Code - so lohnt sich die Beschäftigung mit Emacs auf jeden Fall. Denn es gibt kaum einen anderen Editor der so viele Bearbeitungsfunktionen bietet und derart konfigurierbar ist. Wenn Sie erst einmal mit Emacs umgehen können, so brauchen Sie eigentlich keinen anderen Editor mehr.
Natürlich hat die Vielfältigkeit von Emacs auch seine Schattenseiten, denn Emacs ist in Punkto Bedingung ein wenig abschreckend. Fast alle Kommandos setzen sich aus [Strg]- und [Alt]-Folgen zusammen.
GNU Emacs, XEmacs, Installation
Ich beschränke mich in diesem Workshop auf GNU Emacs, das bei SuSe Linux mitgeliefert wird, jedoch meist nicht standardmäßig installiert ist. Neben GNU Emacs gibt es noch XEmacs, eigentlich unterscheiden sich die beiden Programme lediglich im Namen, im Aussehen und in den Konfigurationsbezeichnungen. Wer also schon XEmacs installiert hat, der kann (bis auf die Konfiguration) alle Befehle genauso auch unter XEmacs nutzen.
Gehen Sie in YaST in Software installieren suchen Sie dort nach emacs, nun sollten einige Pakete erscheinen die zum GNU Emacs gehören. Markieren Sie diese, checken Sie die Abhängigkeiten und installieren Sie sie. Schon haben Sie GNU Emacs installiert.
Haben Sie Emacs nicht in der Liste gefunden oder wollen Sie die aktuellste Version herunterladen, so gehen sie auf die Website von GNU Emacs.
(Klicken für größere Ansicht)
Grundlagen
Den Emacs-Editor starten Sie, indem Sie in die bash (oder in den Ausführen-Dialog) den Befehl emacs eingeben. Wenn Sie zusätzlich einen oder mehrere Dateinamen angeben, lädt Emacs diese automatisch. Dabei sind auch Suchmuster erlaubt: emacs Makefile *.[ch] lädt die Datei Makefile sowie alle C-Quellcodedateien und -Header (.c und .h) des aktuellen Verzeichnisses.
Ist Emacs schon gestartet, können Sie mit [Strg]+[X], [Strg]+[F] Dateiname Dateien laden. Mit [Strg]+[X], [I] wird eine Datei in den vorhandenen Text eingefügt.
Mit [Strg]+[X], [U] kann man eine Aktion rückgängig machen; und dies praktisch unbegrenzt. Sollten sie sich einmal beim Kommando vertan haben, so können Sie die Kommandoeingabe mit [Strg]+[G] abbrechen.
Zum Speichern der veränderten Datei müssen Sie [Strg]+[X], [Strg]+[S] eingeben. Wollen Sie die Datei unter einem neuen Namen speichern, oder haben Sie eine neue Datei angelegt, so müssen Sie [Strg]+[X], [Strg]+[W] Dateiname drücken. Wollen Sie alle geöffneten Dateien speichern, so müssen Sie [Strg]+[X], [S], [!] eintippen.
Beenden können Sie Emacs indem Sie [Strg]+[X], [Strg]+[C] eingeben.
Sicherheitskopien
Emacs erstellt beim Speichern automatisch eine Sicherheitskopie dateiname~, in der der ursprüngliche Text enthalten ist. Außerdem speichert Emacs in regelmäßigen Abständen den aktuellen Zustand des Textes in der Datei #dateiname#.
Emacs meldet sich beim nächsten Öffnen einer Datei für die eine Sicherheitskopie der Zustände existiert mit einer Warnung. Diese Zustände können Sie wiederherstellen, in dem Sie [Alt]+[X] recover-file eingeben. Hatten Sie mehrere Dateien geöffnet, existieren somit also mehrere recover-files, so kann man alle mit [Alt]+[X] recover-session wiederherstellen.
Tastaturkonventionen
Es wird jetzt wohl jedem aufgefallen sein, dass die Tastenkürzel in Emacs unverzichtbar sind. Die Eingabe von Kommandos wird einem jedoch durch zwei Mechanismen erleichtert: Während der Eingabe können Sie den Kommandonamen wie bei der Kommandoeingabe in der bash mit [Tab] ergänzen lassen; das funktioniert übrigens auch bei Dateinamen. Auf früher mit [Alt]+[X] eingeleitete, bereits schon einmal eingesetzte Kommandos können Sie mit [Alt]+[P] (vorheriger) oder [Alt]+[N] (nächster) zurückgreifen.
Hilfe
Emacs ist so komplex, da ist es nur natürlich, dass man hin und wieder in die Hilfe schauen muss. Generell wird die Hilfe mit [F1], [T] aufgerufen. Mit [Strg]+[X], [B] verlassen Sie die Hilfe wieder. Mit [F1], [Strg]+[F] name startet das info-System (die wichtigste Informationsquelle) und listet Informationen zu dem eingegebenen Kommando auf.
Cursorsteuerung
Weitere Tastenkürzel existieren für die Cursorsteuerung, neben den obligatorischen vier Cursortasten und der [Bild-ab]- und [Bild-auf]-Taste gibt es nämlich noch weitere praktische Tasten, die einem die Arbeit mit Emacs erleichtern.
Mit [Alt]+[F] wird ein Wort vor und mit [Alt]+[B] ein Wort zurückgesprungen; mit [Strg]+[A] geht's an den Beginn der Zeile und mit [Strg]+[E] an's Ende; mit [Alt]+[A] kann man an den Anfang des Absatzes und mit [Alt]+[E] an's Ende des Absatzes springen; mit [Strg]+[V] wird eine Seite nach unten und mit [Alt]+[V] eine nach oben gesprungen; die Tastenkombination [Alt]+[<] bringt einen an den Anfang des Textes und [Alt]+[>] an's Ende des Textes; mit [Alt]+[G] n wird der Cursor in die n-te Zeile bewegt.
Ein Teil der Kommandos kann automatisch mehrfach durchgeführt werden; gibt man z.B. [Alt]+ n, [Bild-ab] ein, so werden n Seiten nach unten gescrollt (es ist zu beachten, dass die Zahl n nicht aus dem rechten Zehnerblock, sondern aus dem alphanumerischen Teil für den Buchstabentasten kommt!). Ein weiteres Beispiel ist [Alt]+60, [-] welches eine Linie aus 60 Bindestrichen zeichnet.
Eine sehr praktische Möglichkeit ist die Speicherung der Cursorpositionen in einem Register. Stellen Sie sich vor, Sie haben einen langen Text und müssen immer wieder abwechselnd an zwei verschiedenen Stelle Änderungen vornehmen, oder von der einen Stelle an die andere Stelle etwas übertragen. Da ist es schon sehr nervig, wenn man immer wieder von der einen zu der anderen Stelle springen muss, wohlmöglich auch noch danach suchen muss. Aber wie gesagt, dafür gibt es eine Lösung in Emacs, man legt einfach die Cursorpositionen der Textstellen in Registern ab und kann ganz bequem hin und her springen. Mit der Tastenkombination [Strg]+[X], [R], [Leertaste] register kann man die aktuelle Cursorposition im Register register speichern, will man diese Position wieder aufrufen, so gibt man einfach nur [Strg]+[X], [R], [J] register ein und schon ist man da!
Text markieren, löschen und einfügen
Wie schon bei der Cursorsteuerung gibt es neben obligatorischen Tasten [Enf] und [Backspace] auch wieder spezielle Tastaturkombinationen die einem das Leben leichter machen. So löscht [Alt]+[D]das nächste Wort, bzw. das Ende des Wortes ab der aktuelle Cursorposition, analog dazu löscht [Alt]+[Backspace] das vorherige Wort, bzw. den Beginn des Wortes von der Cursorpostion an; [Strg]+[K] löscht das Zeilenende ab der Cursorposition und [Alt]+[0], [Strg]+[K] löscht den Zeilenanfang vor der Cursorposition; [Alt]+[M] löscht den nächsten Absatz; [Alt]+[Z] x löscht alle Zeichen bis zum ersten Auftreten von x (das Zeichen x wird mit gelöscht); [Strg]+[Y] fügt den zuletzt gelöschten Text an der aktuellen Cursorposition wieder ein.
Etwas ungewöhnlich ist das Markieren mit Emacs: Man muss mit [Strg]+[Leertaste] den Anfang und das Ende des zu markierenden Textbereichs einleiten, bzw. abschließen. Dabei bleibt die Markierung erst einmal unsichtbar, erst wenn Sie abgeschlossen wurde wird Sie sichtbar, aber es erscheint in der Statusleiste ein kleiner Eintrag "Mask set". Mit [Strg]+[W] kann man dann des maskierten Text löschen; [Strg]+[X], [Strg]+[X] vertauscht Cursorposition und Markierungspunkt.
Wem das "komische" markieren zuwider ist, der kann Emacs mit der Eingabe von [Alt]+[X] pc-selection-mode an das Markierverhalten unter Windows (mit [Shift]) anpassen.
Groß- und Kleinschreibung verändern
Mit [Alt]+[C] kann man den Buchstaben an der Cursorposition großschreiben lassen; mit [Alt]+[L] werden alle Buchstaben des Wortes klein geschrieben; mit [Alt]+[U] erreicht man genau das Gegenteil: alle Buchstaben werden groß geschrieben; [Esc], [Alt]+[L] macht alle Buchstaben des Wortes bis der Cursorposition klein, [Esc], [Alt]+[U] macht alle Buchstaben bis zur Cursorposition groß; mit [Strg]+[X], [Strg]+[L] werden alle Buchstaben innerhalb des Markierungsbereichs klein geschrieben, mit [Strg]+[X], [Strg]+[U] werden alle Buchstaben innerhalb des Markierungsbereichs groß geschrieben.
Buchstaben, Wörter und Zeilen vertauschen
Wenn man schnell tippt, schleichen sich einem des öfteren Tippfehler ein; die meisten sind Verdreher. Emacs kann einem da etwas unter die Arme greifen, denn es kann mit [Strg]+[T] zwei Buchstaben vertauschen, der Cursor muss dabei auf dem zweiten den beiden Buchstaben stehen; was bei zwei Zeichen funktioniert, das funktioniert auch bei zwei Wörtern, diese kann man mit [Alt]+[T] tauschen lassen, steht der Cursor beim Beginn eines Wortes, so wird dieses Wort mit dem davor getauscht, steht der Cursor innerhalb eines Wortes, so wird das Wort mit dem nächsten vertauscht. Doch damit nicht genug, wie es die Überschrift schon ankündigt ist das Vertauschen auch mit zwei Zeilen möglich, mit [Strg]+[X], [Strg]+[T] wird die aktuelle Zeile mit der davor getauscht.
Textmodus
Falls Sie es noch nicht bemerkt haben: Emacs bricht nicht automatisch um! Wenn Sie viel Text schreiben der an der richtigen Stelle umgebrochen werden soll, dann aktivieren Sie den Textmodus. Mit [Alt]+[X] text-mode wird der Textmodus aktiviert; mit [Alt]+[Q] führen Sie einen manuellen Umbruch durch, dabei orientiert sich Emacs an der Einrückung der aktuellen Zeile; [Alt]+[S] zentriert die aktuelle Zeile; [Alt]+[Shift]+[S] zentriert den aktuellen Absatz.
Suchen
Wenn Sie etwas in einem Dokument suchen, so ist der beste Weg die inkrementelle Suche. Diese erreichen Sie, indem Sie [Strg]+[S] suchtext eingeben, der Vorteil an dieser Suche ist, dass schon während der Eingabe Wörter gefunden werden, die mit den eingegebenen Anfangsbuchstaben beginnen, wenn Sie zu dem nächsten Wort springen wollen, das mit den eingegebenen Anfangsbuchstaben beginnt, so müssen Sie [Strg]+[S] drücken, Sie können sich selbstverständlich auch noch umentscheiden und die Suche verändern, erst wenn Sie [Enter] drücken, gibt die Suche als abgeschlossen und der Cursor auf die gefundene Stelle gesetzt. Übrigens wird ein Register für vorherige Cursorposition angelegt, darum können Sie auch mühelos mit [Strg]+[X], [Strg]+[X] wieder dorthin zurückspringen. Nochmaliges Drücken der eben genannten Kombination bringt Sie wieder zu der Fundstelle zurück. Wenn Sie jetzt zweimal [Strg]+[S] drücken, so können Sie die Suche auch wieder fortsetzen und zum nächsten Auftreten springen. Übrigens können Sie auch rückwärts suchen, dann müssen Sie [Strg]+[R] statt [Strg]+[S] drücken.
Wenn Sie später noch einmal etwas suchen möchten, wonach Sie schon mal gesucht haben, dann können Sie mit [Strg]+[S], [Alt]+[P] oder [Alt]+[N] vorherige Suchbegriffe durchblättern. Mit [Strg]+[G] wird die Suche abgebrochen.
Bis jetzt haben Sie immer nach genauen Suchbegriffen gesucht, die Suche kann aber auch nach Mustern suchen. In der folgenden Tabelle sehen Sie mögliche Optionen zum Aufbau des Suchmusters:
\< |
Anfang eines Wortes |
\> |
Ende eines Wortes |
^ |
Anfang einer Zeile |
$ |
Ende einer Zeile |
. |
ein beliebiges Zeichen |
.* |
beliebig viele beliebige Zeichen (auch 0) |
.+ |
beliebig viele beliebige Zeichen (mindestens 1) |
.? |
kein oder ein beliebiges Zeichen |
[abc..] |
eines der aufgezählten Zeichen |
[^abc..] |
keines der aufgezählten Zeichen |
\( |
Beginn einer Gruppe |
\) |
Ende einer Gruppe |
\ä |
Sonderzeichen ä |
\. |
Suche nach einem Punkt |
Im Suchtext wird zwischen Klein- und Großschreibung unterschieden, z.B. sucht \<[Dd]ie\> nach "die" (ob, groß oder klein).
Bearbeitungsmodi
Einer der großen Stärken von Emacs sind die Bearbeitungsmodi. Diese bieten einige Fähigkeiten für die jeweiligen Modi, die im Standardmodus nicht verfügbar sind. Interessante Modi existieren für C und C++, HTML und LaTex. Daneben existieren noch zahlreiche Nebenmodi, diese lassen sich zusätzlich zu den oben genannten Hauptmodi aktivieren und bieten erweiterte Fähigkeiten für alle Modi.
Der Standardmodus wird mit [Alt]+[X]
fundamental-mode aktiviert; für die Programmiersprache C ist der C-Mode gedacht, der sich mit [Alt]+[X]
c-mode aktivieren lässt; der entsprechende Modus für C++ wird mit [Alt]+[X]
c++-mode eingeschaltet; wollen Sie HTML-Dateien komfortabel bearbeiten, so sollten Sie mit [Alt]+[X]
html-mode diesen einschalten; für alle LaTex-Jünger gibt es den LaTex-Mode, der sich mit [Alt]+[X]
latex-mode aktivieren lässt.
Bei den angesprochenen Nebenmodi gibt es z.B. den Fließtextmodus, der mit [Alt]+[X]auto-fill-mode eingeschaltet wird, in diesem Modus findet der Wortumbruch automatisch statt; farbige Syntaxmarkierung lässt sich mit [Alt]+[X]
font-lock-mode einschalten; der Abkürzungsmodus - mit automatischer Auflösung von Abkürzungen - ist durch [Alt]+[X]
abbrev-mode hinzuzuschalten; und die Eingabe von ausländischen Sonderzeichen ist mit diesem Kommando möglich [Alt]+[X]
iso-accents-mode
Normalerweise erkennt Emacs jedoch beim Laden automatisch den richtigen Modus. Nur wenn dieser falsch gewählt wurde ist eine nachträgliche Änderung nötig. Besonders hervor zu heben ist der Abkürzungsmodus, der auf pfiffige Art dem Benutzer sehr viel Arbeit abnimmt, denn alle Abkürzungen können ohne jede Vorarbeit eingesetzt werden, geben Sie einfach den Anfang des Worts ein und drücken Sie dann [Alt]+[/]. Nun sucht Emacs im ganzen Dokument nach Wörtern, die so anfangen, wie das soeben abgekürzte Wort; wird er nicht fündig, so durchsucht er sogar alle geöffneten Dokumente. Hat sich Emacs mal geirrt und irrtümlich ein falsches Wort gewählt, weil es mehrere Wörter gibt, die so anfangen, so kann durch nochmaliges Drücken der Tastenkombination [Alt]+[/] das andere Wort eingesetzt werden.
Konfiguration
Wie ich eingangs schon erwähnt habe, kann man Emacs bis ins kleinste Detail konfigurieren. Diesem Thema wollen wir uns in diesem Abschnitt nähern.
Die einfachste Art auf die Optionen zuzugreifen ist das Optionsmenü von Emacs. Gehen Sie also ins Menü Options, dort ist insbesondere der Punkt Options / Customize Emacs / Top-Level Customization Group interessant. Auf den ersten Blick ist der Dialog, der dann erscheint erst einmal verwirrend, denn es wird eine neuer Emacs-Puffer, ähnlich denen, die Sie für die Eingabe sonst immer nutzen. Dieser Puffer zeigt eine Seite an, die unzählige Verweise auf andere Seiten hat auf denen wiederum unzählige Verweise sind. Das wird sehr schnell unübersichtlich. Auf jeder Seite lassen sich die Einstellungen temporär für die aktuelle Sitzung speichern (set for current session) oder aber auch permanent in ~/.emacs speichern (save for future sessions).
Wer keine Lust auf das Suche in den verschachtelten Fenstern hat und es sich zutraut eine Konfigurationsdatei von Hand zu bearbeiten, der findet die Konfiguration von Emacs auch in der Datei ~/.emacs. Interessante Optionen sind (setq-default transient-mark-mode t), damit wird der markierte Textbereich sichtbar gemacht; (global-font-look-mode t) aktiviert die Syntaxhervorhebung automatisch; (when window-system (mwheel-install)) liefert Mausradunterstützung. Geben Sie unbedingt auch die Klammern mit ein, denn es handelt sich um einen Lisp-Dialekt (ähnlich Scheme), bei dem alle Befehle in Klammern stehen müssen.
Abschluss
In diesem Workshops kamen sehr viele Tastenkürzel vor, zu viele wie ich meine, darum habe ich eine PDF mit allen wichtigen Tastenkürzeln für Emacs zusammengestellt. Diese finden Sie in den Related File gleich links hier von.
|