Skip to content

Emacs: Lass mal Tastatur-Makros machen

Peter Paul Rubens & Frans Snyders: Ceres and Pan

Emacs ist kein simpler Editor, der nur zum Tippen einfacher Texte gedacht ist. Emacs ist dazu da, Text zu bearbeiten (der Name Emacs kommt von "Editing MACroS" oder "Editor MACroS"). Das ist seine Stärke.

Und damit fangen wir jetzt an.

Emacs ist so voller Funktionen ...

... dass man sich scheut, sich einmal näher damit zu befassen. Ja, verstehen wir alle. Das darf aber keine Ausrede sein, sich nicht mit den verschiedenen Features zu beschäftigen. Und eines der mächtigsten und beliebtesten Werkzeuge, hat man sich erst einmal damit angefreundet, sind Tastatur-Makros:

Tastatur-Makros

Für wiederholende Aufgaben, benutzen Sie am besten Makros. Beispiel gefällig?

Wenn Sie häufiger zwischen den Web-Technologien wechseln, stehen Sie immer wieder vor dem Problem, Ihren alten Content in das neue System zu überführen. Es gibt zwar für alles und jeden einen Importer, nur leider taugen die alle nichts. In der Regel ist also Handarbeit angesagt.

Macht aber nichts: Kein Editor auf der Welt macht Ihnen das so einfach wie Emacs.

Fangen wir doch mal mit einem ganz einfachen Beispiel an:

Formatieren einer Liste

Nehmen wir mal an, wir wollen den Text einer WordPress-Webseite in unser neues System, welches Markdown verwendet, überführen. Auf der alten Webseite sieht das so aus:

- Item1
- Item2
- Item3

Kopieren wir das, erhalten wir irgendwas a la (da sind einfach nur Leerzeichen vor den Items)

  Item1
  Item2
  Item3

(Natürlich könnten wir das auch über den HTML-Quelltext machen, aber mit irgendeinem einfachen Beispiel müssen wir schließlich anfangen.)

Mag bei drei Items noch kein Hindernis sein, bei ausgiebigen Listen wird das aber ziemlich anstrengend. Wir können jetzt also entweder per Hand durch jede einzelne Zeile gehen und die entsprechende Markdown-Syntax einfügen, oder wir erzeugen uns mal eben schnell ein Makro:

Das Markdown-Ziel-Format der Liste würde so aussehen:

+ Item1
+ Item2
+ Item3

Heißt also: "+" am Zeilenanfang einfügen, mit Ctrl-d (oder M-d) alle überzähligen Leerzeichen löschen, mit Ctrl-n in die nächste Zeile springen, mit Ctrl-a an den Anfang der Zeile springen, "+" einfügen, überzählige Leerzeichen mit Ctrl-d (oder M-d) entfernen, mit Ctrl-n wieder in die nächste Zeile usw. Das in einer Liste mit einhundert Einträgen und der Abend ist gelaufen.

Stattdessen machen wir das nur einmal (nämlich wenn wir uns ein Makro erzeugen) und führen anschließend nur noch das Makro aus.

Los geht's:

Ein Makro definieren: Der Makro-Rekorder

Emacs verfügt über einen Makro-Rekorder. Sie können Ihre Tastatur-Eingaben aufnehmen, speichern und anschließend per Knopfdruck "abspielen".

  • Wechseln Sie in die erste Zeile, die Sie bearbeiten möchten. Setzen Sie den Cursor dabei nicht an den Anfang der Zeile, sondern mittenrein: Sie müssen eh nach jedem Wechsel in die nächste Zeile erst mal an den Anfang der Zeile springen. Also nehmen wir das sofort in unser Makro auf.
  • Drücken Sie F3. Der Makro-Rekorder ist bereit zur Aufnahme und erwartet unsere Befehle.
  • Drücken Sie Ctrl-a, um an den Zeilenanfang zu springen.
  • Drücken Sie +, um ein "+" am Zeilenanfang einzufügen.
  • Entfernen Sie alle überflüssigen Leerzeichen zwischen "+" und Listen-Element
  • Drücken Sie Ctrl-n, um in die nächste Zeile zu hüpfen.
  • Drücken Sie F4, um die Aufnahme zu beenden.

(Liest sich schwerer, als es ist.)

Um jetzt die restlichen Zeilen zu formatieren, drücken Sie einfach so oft F4 (um Ihr Makro auszuführen), bis alle Zeilen formatiert sind.

Makros wiederholen

Bei vier Items hätten Sie jetzt noch drei Mal F4 drücken müssen. Langweilig. Stellen Sie sich lieber mal vor, die Liste wäre tausend Einträge lang gewesen. Klar, tausend Mal F4 zu hämmern bzw. gedrückt zu halten, ist jetzt auch nicht das Ding. Wenn Sie Emacs benutzen, wollen Sie aber so effektiv arbeiten wie möglich. Darum geben wir Emacs einfach mit, wie oft er ein Makro wiederholen soll. Im Falle von tausend Zeilen würden Sie in der ersten Zeile Ihr Makro definieren und anschließend per M-999 gefolgt von F4 999 mal wiederholen. Emacs dürfte sich kurz mal nicht rühren, bis er alle Zeilen abgearbeitet hat, aber mit diesen wenigen Eingaben haben Sie soeben 1000 Zeilen umformatiert! Dafür wurden Computer erfunden!

Weiterführende Fälle aus der Praxis

Da Sie Makros mit allem kombinieren können, was Sie in Emacs machen kann, sind Makros ein beliebig mächtiges Werkzeug. Will ich z. B. in hunderten Dateien eines Verzeichnisses z. B. irgendwelche Links ändern, rufe ich den Emacs Datei-Manager dired auf und erzeuge ich mir ein Makro, dass sämtliche Dateien der Liste abklappert, jede einzelne Datei öffnet, die Links ersetzt, die Datei anschließend speichert, den Buffer mit der Datei wieder schließt, im dired zur nächsten Datei wechselt und das ganze Spiel wiederholt, bis alle Dateien abgearbeitet sind.

Etwas in Emacs per Hand machen zu können, bedeutet es auch per Makro automatisiert ablaufen lassen zu können. Ihre Hände werden es Ihnen danken.

(Makros lassen sich übrigens auch speichern. Wer sich eingehender mit dem Thema "Keyboard Macros" beschäftigen möchte, den verweise ich auf die offizielle Dokumentation.)

Bildnachweis: Peter Paul Rubens (1577–1640) & Frans Snyders (1579–1657): Ceres and Pan (1615)

Trackbacks

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Noch keine Kommentare

Kommentar schreiben

Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
Gravatar, Twitter, Pavatar, Identica, Favatar Autoren-Bilder werden unterstützt.
Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Markdown-Formatierung erlaubt
Formular-Optionen