Erste Schritte mit (X)Emacs

Aus LinuxUser 10/2002

Erste Schritte mit (X)Emacs

Keine Angst vorm Monster

Wenn von Editoren unter Linux die Rede ist, darf einer nicht fehlen: der (X)Emacs. Leider kann er nicht nur sehr viel, sondern setzt auch die Einstiegshürde nicht gerade niedrig. Wir helfen bei der Einarbeitung.

Böse Zungen behaupten, der XEmacs sei kein Texteditor, sondern ein Betriebssystem. Ganz abwegig ist dies nicht, denn seinen Funktionsumfang beschreiben selbst dicke Bücher oft nur annähernd. So macht dieser Artikel gar nicht erst den Versuch, Rom an einem Tag zu erbauen, und nimmt Sie stattdessen an der Hand bei den ersten Schritten mit (X)Emacs als Werkzeug im Linux-Alltag.

Die Schreibweise “(X)Emacs” lässt es schon vermuten: Es gibt – historisch gewachsen, wie so vieles in der Unix-Welt – mehr als eine Emacs-Implementation. Wer sich für die Entwicklungsgeschichte und die Unterschiede der verschiedenen Varianten interessiert, sei auf [1] und [2] verwiesen.

Doch keine Angst: Am Anfang spielt es (außer bei der Installation) keine Rolle, ob Sie zur Übung XEmacs (meist auf der grafischen Oberfläche) oder den Emacs in einer Shell benutzen.

Kasten 1: Die Installation

Verwenden Sie eine der gängigen Distributionen (z. B. SuSE, Red Hat oder Debian), so sind Sie mit hoher Wahrscheinlichkeit im Besitz einer XEmacs-Version, die auf die Eigenheiten (Pfade, Systemvariablen etc.) dieser Distribution eingerichtet ist. Gehören Sie zu den Unglücklichen, deren Distribution XEmacs nicht mitliefert, müssen Sie ihn per Hand installieren. Dazu brauchen Sie

  • den Source-Tarball, aktuell xemacs-21.1.14.tar.gz[3],
  • das Lisp-Archiv xemacs-21.1.14-elc.tar.gz[4] und
  • den Info-Tarball xemacs-21.1.14-info.tar.gz[5].

Als User root legen Sie das Verzeichnis /usr/src/xemacs an, kopieren die drei Dateien dorthin und entpacken sie mit

tar -xzf xemacs-21.1.14.tar.gz
tar -xzf xemacs-21.1.14-elc.tar.gz
tar -xzf xemacs-21.1.14-info.tar.gz

Sodann muss das Ganze noch konfiguriert, kompiliert und installiert werden:

./configure; make; make install

Schließlich benötigen Sie noch einige Zusatzpakete. Der Einfachheit halber installieren wir ein Paket, das alle Zusatzpakete enthält und auf Grund seiner Größe “Sumo”-Tarball genannt wird [6]. Legen Sie zu diesem Zweck als User root das Verzeichnis /usr/local/lib/xemacs mittels

mkdir /usr/local/lib/xemacs

an, und kopieren Sie den Sumo-Tarball dort hin. Sodann wechseln Sie in dieses Verzeichnis und entpacken ihn:

tar -xzf xemacs-sumo.tar.gz

Das reicht aus, um die Erweiterungen am richtigen Platz zu verstauen.

Der erste Kontakt

Zum Starten des XEmacs geben Sie als normaler User das Kommando xemacs & ein. Daraufhin begrüßt Sie der Editor mit einem Startbildschirm (Abbildung 1 zeigt ihn unter X), der erkennen lässt, warum manche Leute das Programm als “selbstdokumentierend” bezeichnen: Er gibt Ihnen neben Informationen zum Copyright auch Hinweise auf die Hilfe und das interaktive Tutorial, das Sie (am besten nach dem Lesen dieses Artikels) durcharbeiten sollten.

Abbildung 1: Startbildschirm

Abbildung 1: Startbildschirm

Dem Startbildschirm entnehmen Sie, dass Sie dazu die Tastenkombination C-h t drücken müssen. An diese, anfangs merkwürdig anmutende Schreibweise sollten Sie gewöhnen, sie wird Ihnen im Zusammenhang mit (X)Emacs immer wieder unterkommen. C-h t bedeutet, dass Sie die [Ctrl]-, auf einer deutschen Tastatur also die [Strg]-Taste, gedrückt halten, dann [h] antippen, beide loslassen und dann [t] betätigen. Was Sie eingeben, zeigt Ihnen XEmacs übrigens auch in der untersten Zeile, dem sogenannten Minibuffer, an.

Wer jetzt am liebsten schreiend davonlaufen möchte, hat dazu mit der Tastenkombination C-x C-c Gelegenheit: Gibt man bei gedrückter [Strg]-Taste nacheinander [x] und [c] ein, verlässt man das Programm. Manche Distributoren stellen diese Tastenkombination allerdings defaultmäßig ab, da man sie leicht aus Versehen tippt und XEmacs somit unerwünschterweise beendet. Benutzen Sie in diesem Falle den Unterpunkt Exit XEmacs im Menü File. Weil jedoch mit Tastenkombinationen vieles schneller und manches ohne sie gar nicht geht, geben wir ihnen im Folgenden den Vorzug.

Puffer über Puffer

Halten Sie irgendeine Taste gedrückt, während der Editor seinen Startbildschirm präsentiert, verschwindet dieser automatisch, und Sie sehen den sogenannten @L: *scratch@L: *-Buffer. Der lässt sich als omnipräsenter “Schmierzettel von XEmacs” bezeichnen: Er ist immer da, auch dann, wenn Sie ihn löschen. Drücken Sie einfach mal C-x k, und XEmacs fragt Sie unten in der Minibuffer-Zeile, welcher Buffer gelöscht werden soll. In diesem Fall ist das per Default der @L: *scratch@L: *-Buffer. Bestätigen Sie die Nachfrage (wie jeden Befehl im Minibuffer) mit [Enter] (in XEmacs-Schreibweise RET), so sehen Sie: Den Buffer gibt es weiterhin.

Aus dem Text-Kommentar im @L: *scratch@L: *-Buffer geht bereits hervor, dass eine Datei mittels C-x C-f geöffnet wird. Im Minibuffer geben Sie nun das passende Verzeichnis und den Namen des zu bearbeitenden Files ein. Zweimaliges Drücken der Tabulatortaste (TAB) hilft dem Gedächtnis nach, indem sich ein neuer Buffer @L: *Completions@L: * mit dem Inhalt des aktuellen Verzeichnisses öffnet. Mit M-v wechseln Sie dort hinein und wählen mit den Cursortasten (oder der Maus) die zu öffnende Datei aus; RET liest sie in einen neuen Buffer ein. Oberhalb der Minibuffer-Zeile sehen Sie den Dateinamen der Datei, die Sie gerade bearbeiten, in der sogenannten Modeline.

Doch was in aller Welt soll M sein? Das Kürzel steht für die [Meta]-Taste, und weil es die auf PC-Tastaturen im Allgemeinen nicht gibt, übernimmt in der Regel [Esc] (ESC) und/oder [Alt] deren Funktion (vgl. auch Kasten 2).

Kasten 2: Ärger mit der Meta-Taste?

Wenn Sie M-x eingeben, meckert XEmacs im Minibuffer etwas von A-x undefined? Dann versuchen Sie, statt der [Alt]- die [Windows]-Taste zu drücken. Fruchtet auch dies nichts, so tragen Sie bitte in die Datei ~/.Xmodmap folgende zwei Zeilen ein:

keysym Alt_L = Meta_L
keysym Meta_L = Alt_L

Existiert die Datei nicht, erzeugen Sie sie einfach neu. Wenn Sie nun noch X neu starten, sollte XEmacs zufrieden sein.

Bei der Dateiauswahl können Sie im Minibuffer einen Teil des Dateinamens (z. B. den Anfangsbuchstaben A) eingeben und dann TAB drücken. Gibt es nur einen passenden Datei- oder Verzeichnisnamen, so ergänzt XEmacs ihn automatisch. Andernfalls zeigt der @L: *Completions@L: *-Buffer nur die Dateien und Verzeichnisse mit diesem Namensanfang an.

Überlegen Sie es sich doch anders, so werden Sie den “Komplettierungszwischenspeicher” mit [q] los. Falls Sie sich einmal verdrückt haben und XEmacs im Minibuffer eine Eingabe erwartet, ziehen Sie sich mit C-g aus der Affäre.

Wollen Sie ein neues File erzeugen, so geben Sie ebenfalls C-x C-f ein, nur dass Sie anschließend keine Datei auswählen, sondern einen neuen Dateinamen eintippen.

Zum Speichern des Inhalts eines Datei-Buffers (und damit der Datei selbst) kommt C-x C-s zum Einsatz; mit C-x C-w legen Sie ihn unter einem anderen, im Minibuffer einzutragenden Namen ab.

Multitasking

Jeder Buffer – ob er nun eine Datei enthält oder eine Sonderfunktion hat – ist über einen eigenen, eindeutigen Namen erreichbar. Wenn Sie einen Befehl (z. B. das Speichern einer Datei) ausführen, so bezieht sich dieser immer auf den aktuellen Zwischenspeicher (bei XEmacs current-buffer genannt). Auch für die Ausgabe von Befehlen erzeugt XEmacs einen Buffer; ein solcher ist z. B. der oben genannte @L: *Completions@L: *-Buffer. Solche XEmacs-internen “Zwischenablagen” erkennen Sie immer daran, dass ihr Name in Sternchen steht.

Wie aber wählt man aus der Vielzahl verschiedener Buffer aus? Eine Möglichkeit lautet C-x b. XEmacs reagiert im Minibuffer mit der Aufforderung

Switch to buffer:

und gibt den Default in Klammern an. Entspricht der Ihren Wünschen, reicht ein RET. Drücken Sie TAB, zeigt Ihnen XEmacs den @L: *Completions@L: *-Buffer an, in dem Sie diesmal keine Datei-, sondern eine Buffer-Auswahl erwartet.

Alternativ gibt es die Möglichkeit, M-x zu drücken, im Minibuffer den Befehl

buffer-menu

einzugeben und mit RET zu bestätigen. (Im Folgenden werden wir für solcherlei Aktionen die Kurzschreibweise M-x buffer-menu RET benutzen.) Aus der @L: *Buffer List@L: * (Abbildung 2) wählen Sie nun mittels der Cursortasten und anschließendem RET den passenden Zwischenspeicher aus. Drücken Sie [?], so bekommen Sie die Tastenkombinationen des Buffer-Menüs präsentiert. Diese Hilfe sowie das Buffer-Menü selbst verlassen Sie durch Drücken von [q].

Abbildung 2: Buffer-Liste

Abbildung 2: Buffer-Liste

Fensterln

Ein und denselben Buffer können Sie übrigens in zwei verschiedenen Fenstern darstellen, in denen Sie unabhängig umherscrollen. Editieren Sie etwas in dem einem, so werden diese Veränderungen natürlich auch im anderen angezeigt.

Mit C-x 3 teilen Sie das aktuelle Fenster horizontal, mit C-x 2 vertikal. Zwischen den Teilfenstern wechseln Sie mit C-x o umher. Wollen Sie dem gerade aktiven wieder das gesamte Fenster überlassen, drücken Sie C-x 1. Keine Angst, die Buffer der übrigen (Ex-)Teilfenster bleiben bestehen, wie Sie im Buffer-Menu sehen. Das aktive Teilfenster löschen Sie übrigens mit C-x 0. Ohne das Fenster zu wechseln, können Sie mit M-C-v im Fenster neben (bzw. bei horizontaler Teilung unter) dem aktuellen Fenster scrollen.

Abbildung 3: XEmacs fensterlt

Abbildung 3: XEmacs fensterlt

Schließlich bietet XEmacs verschiedene Möglichkeiten, Buffer, Dateien oder Verzeichnisse in einem anderen als dem aktuellen Teilfenster anzuzeigen, also das aktuelle Fenster zur Anzeige zu splitten:

  • C-x 4 b Buffername RET öffnet ein Teilfenster mit dem Inhalt von Buffername bzw. zeigt Buffername bei gesplitteten Fenstern im jeweils nächsten, nicht aktuellen Fenster an.
  • C-x 4 f Dateiname RET lädt die Datei Dateiname in ein Subfenster.
  • C-x 4 d Verzeichnis RET tut dasselbe mit dem Inhalt von Verzeichnis.

ABC des Editierens

Natürlich beherrscht XEmacs nicht nur komplexe Fenster-Befehle, sondern auch die Grundfunktionen des Editierens: Text markieren Sie mit der Maus, indem Sie wie gewohnt die linke Maustaste gedrückt halten. Wer die Finger lieber nicht von der Tastatur lässt, geht alternativ mit den Cursortasten an den Anfang des zu markierenden Bereichs (region genannt), drückt C-SPACE, also [Strg-Leer], (der Minibuffer meldet daraufhin Mark set), und wählt den gewünschten Bereich mit den Pfeiltasten aus. Aber auch hierfür gibt es Abkürzungen:

  • Markiere den ganzen Buffer: C-x h.
  • Markiere bis zum Anfang des Buffers: C-<.
  • Markiere bis zum Ende des Buffers: C->.
  • Markiere den ganzen Abschnitt: M-h.
  • Bis zum Zeilenende markieren: C-SPACE end (also [Strg-Leer][Ende]). Auch Markierungen lassen sich übrigens mit [Strg-g] rückgängig machen.

M-w speichert den markierten Inhalt zwischen; mit C-y kopieren Sie ihn an die aktuelle Cursorposition im aktiven Buffer. C-w statt M-w schneidet den Bereich aus und legt ihn im Zwischenspeicher ab. Die aktuelle Zeile von der aktuellen Position bis zum Zeilenende löschen Sie mit C-k. Rückgängigmachen lassen sich alle Eingaben und Veränderungen mit C-x u. Für die wichtigsten Textoperationen hat XEmacs vordefinierte Tastenkombinationen eingebaut:

  • [Entf] (bei XEmacs DEL genannt) löscht das letzte eingegebene Zeichen. Allerdings sorgen viele Distributoren bereits “ab Werk” dafür, dass sich [Entf] nicht nach Emacs-Manier verhält, sondern das Zeichen unter dem Cursor ausradiert. Standardmäßig geht dies mit C-d.
  • M-Backspace entfernt das Wort vor (links) der Cursorposition, M-d das Wort dahinter.
  • C-x DEL entfernt alles bis zum Satzanfang,
  • M-k alles bis zum Ende des Satzes, einschließlich der Cursorposition.

Auch für lästige Vertipper hat XEmacs eine Lösung:

  • C-t vertauscht die letzten beiden Zeichen,
  • M-t die letzten beiden Wörter
  • und C-x C-t die letzten beiden Zeilen. Falls Sie sich bei der Groß- oder Kleinschreibung eines Wortes vertan haben, hilft Folgendes:
  • Mit M– M-l (M– heißt, bei gedrückter [Meta]-Taste die Minustaste [-] drücken) das Wort vor dem Cursor in Kleinbuchstaben zu ändern.
  • M– M-u macht das genaue Gegenteil, nämlich das Wort vor dem Cursor in Großbuchstaben zu schreiben.
  • M– M-c ändert den ersten Buchstaben des Wortes vor dem Cursor von Groß- in Kleinschreibung oder umgekehrt.

Wer suchet, der findet!

Was wäre ein Editor ohne Suchfunktionen? XEmacs wäre nicht XEmacs, wenn er nicht auch hier komfortable Möglichkeiten anböte: Wie bei anderen Editoren auch können Sie nach einem ganzen Wort suchen. Dazu drücken Sie C-s RET und geben unten im Minibuffer das zu suchende Wort ein. Wollen Sie den Buffer vom Ende her aufrollen, tippen Sie stattdessen C-r RET und dann den Suchbegriff. Zum Wiederholen der Suche dient C-s C-s. Lassen Sie das RET am Ende des Suchbefehls weg, steht im Minibuffer:

I-search:

Bei der “inkrementellen Suche” nimmt XEmacs bereits bei der Eingabe des ersten Buchstabens die Spur auf und bewegt den Cursor auf das nächste Wort, das mit diesen Buchstaben anfängt. Erweitern Sie den Suchbegriff, zieht der Editor nach. Geben Sie z. B. XEm ein, springt XEmacs zum ersten Wort nach der Ausgangscursorposition, das mit dem Buchstaben X anfängt, danach zum ersten Wort, das mit XE anfängt und schließlich zum ersten Wort, das mit XEm beginnt. Ist dies das Wort oder der Wortteil Ihrer Wahl, so drücken Sie einfach C-s, und XEmacs sucht weiter. Mit C-r funktioniert die Suche natürlich auch hier vom Buffer-Ende her.

Mussten Sie nur einen Teil Ihres Suchbegriffs eingeben, um das passende Wort zu finden, können Sie es mit C-w markieren und setzen die Suche danach mit C-s (bzw. C-r) fort. Dasselbe funktioniert natürlich ebenfalls nach dem Markieren eines Zeilenrests mit C-y.

Clever ist auch die Suche nach einem Satzteil unter Vernachlässigung der Satzzeichen mit C-s RET C-w Satzteil RET, rückwärts mit C-r RET C-w Satzteil RET.

Drucken kann XEmacs übrigens auch, und zwar mit M-x lpr-buffer RET bzw. M-x lpr-region RET. Mit ersterem Befehl drucken Sie den gesamten aktuellen Buffer, mit letzterem nur den im aktuellen Buffer markierten Bereich.

Hilfe zur Selbsthilfe

Das reicht sicher für den Anfang, doch irgendwann möchte man mehr. Grund genug, mit C-h i den internen Browser für Info-Dateien aufzurufen. Wählen Sie dort den Punkt XEmacs und anschließend New-Users-Guide. Weitere Hilfe leisten die Punkte XEmacs und XEmacs-FAQ . Mit [s] suchen Sie innerhalb des Browsers nach Wörtern; C-h i ? gibt Hilfe zum Browser selbst.

Abbildung 4: Info-Screen

Abbildung 4: Info-Screen

Suchen Sie einen Befehl, der eine bestimmte Aufgabe ausführt, so schaut XEmacs mit M-x apropos Begriff RET nach Begriff in allen Befehlsnamen und zeigt sie mit einer Kurzbeschreibung im @L: *Apropos@L: *-Buffer an. Wollen Sie z. B. wissen, wie Sie ans Ende des aktuellen Buffers springen, fahnden Sie danach mit M-x apropos end RET und finden unter anderem den Befehl end-of-buffer. Bedenken Sie jedoch, dass sämtliche Dokumentation in Englisch verfasst und eine Suche nach deutschen Begriffen daher zwecklos ist. Oft ist es zudem sinnvoller, zuerst in den thematisch gegliederten Info-Dateien zu suchen.

Doch M-x end-of-buffer RET einzutippen, nur um ans Ende der bearbeiteten Datei zu springen, ist reichlich mühselig. C-h w end-of-buffer RET verrät, dass dieser Befehl unter anderem über die Tastenkombination C-end abgekürzt werden kann – end steht für die [Ende]-Taste.

Wollen Sie umgekehrt wissen, welcher Befehl welcher Tastenkombination zugewiesen ist, drücken Sie C-h k, worauf der Minibuffer mit Describe key: die Eingabe einer Tastenkombination (nicht deren Umschreibung in Buchstaben, sondern wirklich eingetippt) erbittet. Geben Sie C-x C-f ein, so erfahren Sie, dass der Befehl zum Öffnen von Dateien find-file heißt. C-h k zeigt Ihnen natürlich auch, dass es selbst dem Befehl describe-key zugewiesen ist.

Wollen Sie mehr über das Kommando wissen, so benutzen Sie den Befehl describe-function, der über C-h f zu erreichen ist.

Tabelle 1: Vorgestellte Tastaturkürzel

Tastenkombination Befehl Wirkungsweise
C-x C-f find-file Datei öffnen, erzeugen
C-x C-s save-buffer Datei bzw. Buffer speichern
C-x C-w write-file Datei bzw. Buffer unter anderem Namen speichern
C-x C-c save-buffers-kill-emacs Buffer speichern und XEmacs beenden
C-x C-k kill-buffer Aktuellen Buffer löschen
C-x b switch-to-buffer Wechsle zu Buffer …
M-x execute-extended-command Befehl ausführen
C-SPACE set-mark-command Anfang markieren
M-w kill-ring-save Markierten Bereich zwischenspeichern
C-y yank Zwischengespeicherten Bereich einfügen
C-w kill-region Markierte Bereiche löschen
C-k kill-line Zeile von der aktuellen Position bis zum Zeilenende löschen
C-x u undo Letzte Eingabe rückgängig machen
M-Backspace backward-or-forward-kill-word Wort links vom Cursor löschen
M-d kill-word Wort rechts vom Cursor löschen
C-x DEL oder C-x Backspace backward-or-forward-kill-sentence Löschen bis zum “Satzanfang”
M-k kill-sentence Löschen bis zum Satzende
C-t transpose-chars Vertausche das aktuelle Zeichen mit dem links vom Cursor
M-t transpose-words Vertausche Wort hinter Cursor mit dem vor dem Cursor
C-x C-t transpose-lines Vertausche die aktuelle Zeile mit der über dem Cursor
M– M-l downcase-region-or-word Wort oder Bereich in Kleinschreibung konvertieren
M– M-u upcase-region-or-word Wort oder Bereich in Großschreibung konvertieren
M– M-c upcase-region-or-word Anfangsbuchstaben in Groß- oder Kleinschreibung konvertieren
C-s RET search-forward Vorwärtssuche nach Wort
C-r RET search-backwards Rückwärtssuche nach Wort
C-s isearch-forward Suche beginnt, noch während das zu suchende Wort Buchstabe für Buchstabe eingegeben wird (inkrementelle Suche vom Buffer-Anfang her)
C-r isearch-backward Inkrementelle Suche vom Ende des Buffers her
C-s RET C-w word-search-forward Vorwärtssuche nach Satzteil ohne Beachtung von Satzzeichen
C-r RET C-w word-search-backward Rückwärtssuche nach Satzteil ohne Beachtung von Satzzeichen
C-h i info Info-Browser starten
s Info-search Im Info-Browser suchen
C-h w where-is Zuordnung Befehl zu Tastenkombination
C-h k describe-key Zuordnung Tastenkombination zu Befehl
C-h f describe-function Hilfe zu Befehl

Auch wenn Sie sich jetzt mit Tastenkombinationen und Befehlen überschüttet sehen: Das ist natürlich nicht alles, was Emacs zu bieten hat. In einem der nächsten Hefte erfahren Sie daher, wie Sie Tasten mit eigenen Befehlen belegen oder HTML-Seiten komfortabel und übersichtlich erstellen. Um seinem Ruf als “Betriebssystem” gerecht zu werden, sollte XEmacs zudem Ihre Mails und sogar Usenet-News-Gruppen lesen können. Bis dahin überzeugen Sie sich mit M-x doctor RET davon, dass XEmacs mehr ist als ein Editor.

Glossar

Lisp

Die Programmiersprache, in der ein Großteil von XEmacs geschrieben ist. Zwar gehört Lisp nicht gerade zu den schnellsten Sprachen, allerdings hat ihre Verwendung den Vorteil, dass Sie vergleichsweise einfach nahezu jede Erweiterung für XEmacs entwickeln können.

Info

Ein Browser für Hypertexte [7]. Die Dokumentation zu XEmacs liegt in solchen (ähnlich wie bei HTML) verlinkten Info-Files vor.

Minibuffer

Die letzte Zeile des XEmacs-Fensters. Dort erwartet der Editor Ihre Eingaben und gibt Meldungen aus, weshalb der Minibuffer auch “echo-area” genannt wird. Mit den Pfeiltasten nach oben und unten blättern Sie durch die letzten Befehle. Die [Tab]-Taste ergänzt Ihre Eingaben automatisch.

Der Autor

Oliver Much studiert Jura an der Uni Bonn.

LinuxUser 10/2002 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben