7.4 Editoren
Es wurden in diesem Kapitel bereits einige Programme vorgestellt, mit deren Hilfe sich Textdateien manipulieren lassen. Allerdings wurde bisher noch keine Möglichkeit gezeigt, solche Dateien einzugeben oder zu bearbeiten. Die grafischen Oberflächen für Linux sind reichlich mit mausgesteuerten und fensterbasierten Editoren ausgestattet. Dennoch ist es nützlich, den Umgang mit einem klassischen Kommandozeileneditor zu beherrschen.
In diesem Abschnitt werden die entscheidenden Funktionen der beiden wichtigsten Editoren vorgestellt. Der vi (gesprochen: »wie ei«) ist der ursprüngliche Unix-Editor und steht deshalb in jeder beliebigen Unix-Umgebung zur Verfügung. Emacs wurde ursprünglich von Richard Stallman geschrieben und verfügt über eine Reihe komfortabler Fähigkeiten.
7.4.1 vi
Der eigentliche vi-Texteditor wurde von Bill Joy an der UC Berkeley programmiert. Es gibt eine Reihe mehr oder weniger kompatibler Editoren, die die Funktionalität des ursprünglichen vi verbessern. Unter Linux kommt beispielsweise häufig Vim (ViImproved) von Bram Molenaar zum Einsatz.
Der vi-Texteditor wird durch die Eingabe von vi beziehungsweise vi Dateiname gestartet; bei modernen Distributionen ist vi in der Regel ein Symlink auf vim. Wenn Sie einen Dateinamen angeben, wird diese Datei zum Bearbeiten geöffnet beziehungsweise neu angelegt.
Nachdem der vi gestartet wurde, befindet er sich im Befehlsmodus. Hier können Sie in der untersten Zeile Befehle eingeben, die in der Regel aus einem oder zwei Buchstaben bestehen. Einige dieser Befehle wechseln in den Editiermodus, in dem Sie Text eingeben oder ändern können, andere dienen dem Verschieben, Löschen oder Kopieren von Text. Mit wechseln Sie aus dem Editiermodus wieder zurück in den Befehlsmodus.
Anders als bei den meisten anderen Editoren werden Befehle also nicht durch spezielle Tastenkombinationen mit der - oder -Taste getätigt, sondern durch normale Tasten, solange Sie sich im Befehlsmodus befinden.
Im Folgenden werden jeweils genau die Tasten angegeben, die Sie auf der Tastatur drücken müssen – beispielsweise bedeutet nicht, dass Sie ein großes A eingeben sollen, sondern dass die Taste gedrückt werden soll. Ein großes A würde dagegen als + angegeben. Wenn mehrere Tasten nacheinander gedrückt werden müssen, werden diese einfach der Reihe nach aufgeführt. Lediglich einige ganz eindeutige Sonderzeichen werden so aufgeführt, als seien sie einzelne Tasten – bedeutet beispielsweise, dass Sie + drücken müssen.
Bei einigen selteneren Sonderzeichen wird außerdem einmal erklärt, wie Sie sie eingeben können. Da der vi auch bei Mac OS X (siehe nächster Abschnitt) mitgeliefert wird und Sie Linux natürlich auch auf dem Macintosh installieren können, finden Sie die Tastenkombinationen für PC und Mac, falls diese sich unterscheiden.
Die wichtigste Taste im Befehlsmodus ist – sie wechselt in den Einfügemodus, in dem Sie Text eingeben können. In diesem Modus können Sie sich grundsätzlich mit den Pfeiltasten durch den Text bewegen. Die Löschtasten funktionieren dagegen je nach Terminal nicht immer. Statt mit gelangen Sie auch mit anderen Tasten in den Eingabemodus, die den Cursor unterschiedlich platzieren und gegebenenfalls Text ersetzen: startet die Eingabe hinter der Cursorposition. fügt unter der Cursorposition zunächst eine neue Zeile ein, während + zunächst die aktuelle Zeile nach unten verschiebt. ersetzt das nächste Wort und die aktuelle Zeile. Ersetzen heißt in diesem Fall, dass der jeweilige Text vor der Aktivierung des Eingabemodus entfernt wird.
Im Befehlsmodus können Sie sich mit folgenden Tasten schrittweise durch den Text bewegen: nach links, nach unten, nach oben und nach rechts. Wie Sie sehen, liegen diese vier Tasten nebeneinander, was ihre Verwendung sehr bequem macht. In den meisten Terminalemulationen funktionieren zwar auch die Pfeiltasten, aber allgemein kompatibel sind nur diese vier Buchstabentasten.
Den meisten Befehlen können Sie eine Zahl voranstellen, um sie mehrmals auszuführen. Beispielsweise geht um drei Schritte nach links und um vier Zeilen nach unten. entfernt drei Wörter und schaltet dann den Eingabemodus ein.
bewegt den Cursor um ein Wort nach rechts; um ein Wort nach links. Auch diese Tasten lassen sich mit einer Zahl kombinieren, um mehrere Wörter weiter- beziehungsweise zurückzugehen.
(Null) springt zum Zeilenanfang; ( + ) zum Zeilenende. Runde Klammern dienen dem Bewegen zwischen Sätzen: Beispielsweise bewegt + sich zum Anfang des vorigen Satzes oder + zum nächsten. Geschweifte Klammern – und – springen zum Anfang des nächsten beziehungsweise des vorigen Absatzes. Auf einem PC werden sie mithilfe der Tastenkombinationen + beziehungsweise + erzeugt, auf dem Mac mithilfe von + beziehungsweise + .
Eine Zahl mit einem Pipe-Zeichen (PC: + , Mac: + ) dahinter springt zum angegebenen Zeichen in der aktuellen Zeile: bewegt sich beispielsweise zur Position 7. Hat eine Zeile weniger Zeichen als den Wert, den Sie angeben, dann bewegt sich der Cursor zum letzten Zeichen.
bewegt den Cursor zum Anfang der vorigen Zeile, während oder zum ersten Nicht-Leerzeichen in der nächsten Zeile springen.
Besonders angenehm sind die eingebauten Suchfunktionen, die Sie im Befehlsmodus durchführen können: leitet einen regulären Ausdruck im grep-Format ein. Wenn Sie drücken, wird vorwärts danach gesucht. Der Cursor bewegt sich auf das erste Zeichen der Fundstelle. Suchmuster sucht rückwärts nach dem angegebenen beziehungsweise vorigen Muster. sucht nach dem nächsten Vorkommen des aktuellen Suchmusters in der jeweiligen Suchrichtung; + sucht dagegen in der anderen Richtung.
Beispielsweise sucht[0-9] vorwärts nach der nächsten Ziffer; sucht erneut danach. [a-z] sucht rückwärts nach dem nächstgelegenen Kleinbuchstaben, ein anschließendes sucht wiederum den vorherigen.
Die Befehle zum automatischen Suchen und Ersetzen beginnen mit einem , weil es sich um Befehle des Zeileneditors ex handelt, auf dem vi basiert. Alle ex-Befehle werden mit abgeschlossen, deshalb ist es im Folgenden nicht aufgeführt. Mit Suchmuster Ersatztext ersetzen Sie das Suchmuster in der aktuellen Zeile durch den Ersatztext. Für globales Ersetzen im gesamten Text ist die etwas komplexere Form Suchmuster Ersatztext zuständig; die Option G steht hier für »global«. Verwenden Sie als zusätzliche Option, wenn Sie aus Sicherheitsgründen jede einzelne Änderung bestätigen möchten. Statt des Prozentzeichens können Sie auch zwei durch Komma getrennte Zeilennummern angeben, um das Ersetzen auf den entsprechenden Bereich des Dokuments zu beschränken.
Für das Löschen im Befehlsmodus sind die folgenden Tasten und Tastenfolgen definiert: löscht das aktuelle Zeichen, + das Zeichen vor dem Cursor. löscht das ganze Wort, während die gesamte aktuelle Zeile entfernt. Wenn Sie beispielsweise drei Wörter löschen möchten, müssen Sie eingeben, für vier Zeilen lautet die Eingabe dagegen . Die Tastenkombination + löscht den Text bis zum Ende der Zeile. oder + setzen den zuletzt gelöschten Text hinter beziehungsweise vor dem Cursor wieder ein. Der jeweilige Löschvorgang stellt den gelöschten Text nacheinander in nummerierte Löschpuffer. Mit fügen Sie zum Beispiel den Text aus dem Löschpuffer Nummer 1 – dem ältesten – ein. Insgesamt existieren neun nummerierte Löschpuffer.
Wenn Sie Text kopieren möchten, können Sie (Abkürzung für »yank«) und ein Navigationskommando verwenden, beispielsweise für ein Wort oder für fünf Zeilen. Der Text landet – genau wie beim Löschen – nacheinander in den nummerierten Puffern 1 bis 9 und kann durch die entsprechenden -Sequenzen wieder eingefügt werden. Wenn Sie drücken, dann einen Buchstaben von bis und schließlich zweimal + , wird die aktuelle Zeile dagegen in einen von 26 benannten Puffern kopiert. Wird der Name des Puffers mit kombiniert (Großbuchstabe), dann wird der Inhalt des Puffers nicht überschrieben, sondern um die neu kopierte Zeile ergänzt. Mit , dem Buchstaben eines benannten Puffers und oder + können Sie den Text des entsprechenden Puffers wieder einfügen.
Die Taste macht den letzten Lösch-, Einfüge- oder Änderungsbefehl rückgängig. Beachten Sie, dass nur in Vim mehrere Schritte rückgängig gemacht werden können; beim klassischen vi ist lediglich ein Schritt möglich. + stellt die gesamte zuletzt modifizierte Zeile wieder her, und der Punkt wiederholt den letzten Editierbefehl beliebig oft.
Wichtig sind schließlich noch die Dateioperationen. Auch bei ihnen handelt es sich um ex-Befehle. Geben Sie Dateiname ein, um die aktuell bearbeitete Datei unter einem neuen Namen zu speichern; beachten Sie aber, dass Sie danach mit der alten Datei weiterarbeiten. speichert sie nach erfolgten Änderungen erneut unter diesem Namen – das dient jeweils dem Umgehen von Schutzmaßnahmen. Dateiname öffnet die angegebene Datei und fügt ihren Inhalt an der aktuellen Cursorposition ein. beendet den vi, aber nur, wenn die aktuelle Datei gespeichert wurde. erzwingt das Beenden und verwirft Änderungen. ist eine Kurzfassung für : Beide bedeuten, dass vi zuerst speichern soll und anschließend beendet werden soll.
Diese kurze Übersicht ermöglicht es Ihnen, sich grundsätzlich im vi zurechtzufinden und effizient Texte zu bearbeiten. In Wirklichkeit verfügt er über Unmengen weiterer Befehle, immerhin gibt es ganze Bücher über die Arbeit mit diesem Editor. Tabelle 7.4 zeigt eine Übersicht über die wichtigsten dieser Kommandos; zum Teil kamen diese nicht in der vorigen Beschreibung vor. Aber ob Sie nun mit der vorliegenden kurzen Anleitung oder mit einem umfangreichen Tutorial arbeiten – Geläufigkeit erreichen Sie nur, wenn Sie ständig üben.
Tastenkürzel/Befehl | Bedeutung |
Moduswechsel |
|
|
Wechsel in den Eingabemodus an aktuelle Position |
|
Wechsel in den Eingabemodus nach aktueller Position |
+ |
Wechsel in den Eingabemodus am Zeilenanfang |
+ |
Wechsel in den Eingabemodus am Zeilenende |
|
Wechsel in den Eingabemodus unter aktuelle Zeile |
+ |
Wechsel in den Eingabemodus über aktuelle Zeile |
|
Wechsel aus Eingabemodus in den Befehlsmodus |
Navigation im Text |
|
|
Cursor um ein Zeichen nach links bewegen |
|
Cursor um ein Zeichen nach unten bewegen |
|
Cursor um ein Zeichen nach oben bewegen |
|
Cursor um ein Zeichen nach rechts bewegen |
(Null, nicht O) |
Cursor an den Zeilenanfang |
+ , d. h. |
Cursor ans Zeilenende |
+ , d. h. |
Cursor zum vorigen Satzanfang |
+ , d. h. |
Cursor zum nächsten Satzanfang |
+ (Windows) oder + (Mac), |
Cursor zum vorigen Absatzanfang |
+ (Windows) oder + (Mac), |
Cursor zum nächsten Absatzanfang |
n + (Windows) bzw. n + (Mac), d. h. n |
Cursor zu Zeichen n in der aktuellen Zeile |
|
Cursor zum Anfang der vorigen Zeile |
oder |
Cursor zum ersten Nicht-Leerzeichen der nächsten Zeile |
+ |
Cursor zum Anfang der ersten sichtbaren Zeile |
+ |
Cursor zum Anfang der Zeile in der Bildschirmmitte |
+ |
Cursor zum Anfang der letzten sichtbaren Zeile |
n + , d. h. n |
Cursor in die Zeile, die dem angegebenen prozentualen Anteil des Textes entspricht |
|
Cursor ein Wort weiter (Satzzeichen als eigene Wörter) |
+ |
Cursor ein Wort weiter (inklusive Satzzeichen) |
|
Cursor ein Wort zurück (Satzzeichen als eigene Wörter) |
+ |
Cursor ein Wort zurück (inklusive Satzzeichen) |
|
Cursor zum nächsten Wortende |
|
Cursor zum vorigen Wortende |
n oder n |
Cursor in Zeile n |
|
Cursor an den Textanfang |
+ |
Cursor an den Anfang der letzten Zeile |
n Tastenkürzel |
Die angegebene Funktion n-mal ausführen |
Scrollen (Bildschirm bewegen, ohne den Cursor zu verschieben) |
|
+ |
eine Zeile nach oben scrollen |
+ |
eine Zeile nach unten scrollen |
+ |
einen halben Bildschirm nach oben scrollen |
+ |
einen halben Bildschirm nach unten scrollen |
+ |
einen ganzen Bildschirm nach oben scrollen |
+ |
einen ganzen Bildschirm nach unten scrollen |
|
die Zeile mit dem Cursor in die Bildschirmmitte scrollen |
|
die Zeile mit dem Cursor an den oberen Bildschirmrand scrollen |
|
die Zeile mit dem Cursor an den unteren Bildschirmrand scrollen |
Zeichen suchen |
|
Zeichen |
erstes Vorkommen des angegebenen Zeichens in der aktuellen Zeile suchen |
n Zeichen |
das n. Vorkommen des angegebenen Zeichens in der aktuellen Zeile suchen |
+ Zeichen |
rückwärts in der aktuellen Zeile nach dem angegebenen Zeichen |
|
den vorherigen Suchbefehl wiederholen |
|
den vorherigen Suchbefehl in die andere Richtung wiederholen |
|
zwischen korrespondierenden Klammern (auch eckigen oder geschweiften) hin- und herspringen; mit Zähler völlig andere Bedeutung (siehe unter »Navigation«) |
Volltextsuche und Ersetzen |
|
RegExp |
vorwärts im Text nach dem angegebenen regulären Ausdruck suchen |
RegExp |
rückwärts im Text nach dem angegebenen regulären Ausdruck suchen |
|
in die aktuelle Richtung erneut nach dem vorherigen regulären Ausdruck suchen |
+ |
in die entgegengesetzte Richtung erneut nach dem vorherigen regulären Ausdruck suchen |
wrapscan |
Suche darf Dokumentende/-anfang überschreiten (Standard). |
nowrapscan |
Suche darf Dokumentende/-anfang nicht mehr überschreiten. |
sethlsearch |
künftig alle gefundenen Ergebnisse hervorheben |
nohlsearch |
die aktuelle Hervorhebung ausblenden |
setnohlsearch |
die gefundenen Ergebnisse nicht mehr hervorheben |
setincsearch |
inkrementelle Suche – bereits während der Eingabe zu suchen beginnen |
setnoincsearch |
die inkrementelle Suche abschalten |
Text1 Text2 |
das nächste Vorkommen von Text1 in der aktuellen Zeile durch Text2 ersetzen |
Text1 Text2 |
alle Vorkommen von Text1 in der aktuellen Zeile durch Text2 ersetzen |
Text1 |
das erste Vorkommen von Text1 in jeder Zeile durch Text2 ersetzen |
Text1 |
alle Vorkommen von Text1 in jeder Zeile (d. h. alle Vorkommen im gesamten Text) durch Text2 ersetzen |
Text1 |
wie der vorherige Befehl, aber vor jedem einzelnen Ersetzungsvorgang nachfragen (die Option steht auch für alle anderen Optionen zur Verfügung) |
Sprungmarken |
|
|
Sprung zur letzten Sprungmarke (Ergebnis einer Suche oder eines -Sprungbefehls) |
+ |
in der Liste der Sprungmarken schrittweise rückwärts blättern |
+ |
in der Liste der Sprungmarken schrittweise vorwärts blättern |
bis |
an der aktuellen Cursorposition eine der benannten Marken A bis Z einrichten |
bis |
zu einer der benannten Marken A bis Z springen |
bis |
zum Anfang der jeweiligen Zeile springen, in der sich eine der benannten Marken A bis Z befindet |
marks |
Liste aller Marken ausgeben |
Löschen, Kopieren und Einfügen |
|
|
das Zeichen unter dem Cursor ausschneiden (löschen und in einem Puffer speichern) |
+ |
das Zeichen links neben dem Cursor ausschneiden |
Navigationsbefehl |
Die dem Navigationsbefehl entsprechende Menge Text ausschneiden. löscht beispielsweise drei Zeichen nach links. |
|
ganze Zeile ausschneiden |
Navigationsbefehl |
wie , aber anschließend in den Eingabemodus wechseln |
|
wie , aber anschließend in den Eingabemodus wechseln |
Navigationsbefehl |
die dem Navigationsbefehl entsprechende Menge Text in den Puffer kopieren (yank) |
|
ganze Zeile kopieren |
|
den Text aus dem Puffer an der aktuellen Cursorposition einfügen |
+ |
den Text aus dem Puffer hinter der aktuellen Cursorposition einfügen |
|
das aktuelle und das folgende Zeichen vertauschen |
Wiederholen, Rückgängigmachen, Wiederherstellen |
|
|
den letzten Befehl rückgängig machen (in vi nur einmal, in Vim mehrmals möglich – auch mit Zähler) |
+ |
den zuletzt rückgängig gemachten Befehl wiederherstellen (nur Vim) |
|
den vorherigen Befehl wiederholen |
Datei- und Fensterverwaltung |
|
|
die aktuelle Datei speichern |
Neuer Name |
eine Kopie der aktuellen Datei unter NeuerName speichern; mit der aktuellen weiterarbeiten |
edit Dateiname |
das Editieren der aktuellen Datei beenden (muss gespeichert sein) und die angegebene laden |
edit Dateiname |
das Editieren der aktuellen Datei abbrechen (wird nicht gespeichert!) und die angegebene laden |
wedit Dateiname |
die aktuelle Datei automatisch speichern und schließen und die angegebene laden |
hide edit Dateiname |
die aktuelle Datei verbergen und die angegebene laden |
buffers |
nummerierte Liste aller Puffer (geöffneten Dateien) |
buffer Nummer |
zum Puffer mit der angegebenen Nummer wechseln |
|
vi beenden (alle Dateien müssen gespeichert sein) |
|
Beenden von vi erzwingen (nicht gespeicherte Dateien werden verworfen) |
7.4.2 Emacs
Der Name Emacs steht für »Editor Macros«, weil er ursprünglich als Satz von Makrobefehlen für einen älteren Editor entworfen wurde. Inzwischen ist er ein eigenständiger Editor, der in vielen verschiedenen Varianten für etliche Plattformen verfügbar ist, nicht nur für alle erdenklichen Unix-Arten, sondern beispielsweise auch für Windows. Die Hauptentwicklungslinie ist der GNUEmacs, den Sie von der Website des GNU-Projekts (www.gnu.org) oder den zahlreichen weltweiten Mirror-Sites herunterladen können. Die aktuelle Hauptversion ist 23.x, was Ihnen einen Eindruck davon vermitteln mag, wie lange diese Software bereits existiert – das Programm ist ausgereift und sehr stabil. Daneben gibt es den sogenannten XEmacs, was ein wenig verwirrend ist, weil beide Varianten sowohl auf der Konsole als auch in einer grafischen X-Window-Oberfläche laufen.
Emacs verfügt über einen erheblich größeren Befehlsumfang als vi; es handelt sich letzten Endes nicht nur um einen Editor, sondern um einen vollwertigen Shell-Ersatz mit zusätzlichen Funktionen wie E-Mail, unzähligen Betriebsmodi für diverse Textsorten und sogar Spielen.
Die meisten Emacs-Befehle werden durch Tastenkombinationen mit (auf englischen PC-Tastaturen und auf dem Mac ) oder gebildet. Wenn Sie auf Ihre Tastatur schauen, werden Sie feststellen, dass Sie gar keine -Taste haben; die gibt es nur an einigen alten Terminals und verschiedenen Unix-Workstations. In den meisten Terminalprogrammen oder in der GUI-Version von Emacs kann die -Taste dafür verwendet werden. Einige Terminalemulationen bestehen dagegen darauf, dass Sie -Tastenkombinationen durch Drücken der Taste und anschließendes Betätigen der entsprechenden Kombinationstaste eingeben.
Die Emacs-Dokumentation verwendet eine etwas eigenwillige Schreibweise für die Tastenkombinationen. Diese Schreibweise wird hier kurz erläutert und anschließend verwendet, damit Sie sich nicht umzugewöhnen brauchen, wenn Sie die zahlreichen Hilfeseiten im Emacs selbst lesen. -Tastenkombinationen werden durch »C-« (control), gefolgt von dem entsprechenden Zeichen, angegeben, beispielsweise steht C-x für + . -Tastenkürzel werden dagegen mit vorangestelltem M- dargestellt. M-x bedeutet also je nach der Umgebung, in der Sie arbeiten, entweder + oder gefolgt von . Letzteres funktioniert übrigens immer.
Der Emacs wird durch Eingabe von emacs oder emacs Dateiname gestartet. Wenn Sie ihn nicht in einem GUI-Fenster, sondern in der aktuellen Konsole aufrufen möchten, lautet das Kommando emacs -nw [Dateiname]. Sie können mehrere Dateien auf einmal bearbeiten; die einzelnen Arbeitsbereiche für Dateien werden als Buffer bezeichnet. Falls Sie keinen Dateinamen angegeben haben, befinden Sie sich zunächst im Scratch-Buffer (Notizblock), der für ungespeicherte Notizen vorgesehen ist. Wenn Sie eine speicherbare Datei editieren möchten, müssen Sie diese zunächst mit C-x C-f Dateiname »besuchen« (die Original-Emacs-Dokumentation verwendet den Ausdruck »visit«). Falls diese Datei bereits existiert, wird sie geöffnet, ansonsten neu angelegt.
Wenn mehrere Buffer geöffnet sind, können Sie mithilfe der Tastenkombination C-x b Buffername zum Buffer mit dem angegebenen Namen wechseln (ohne Angabe eines Buffers wird reihum zum jeweils nächsten gewechselt). Eine Liste aller verfügbaren Buffer erhalten Sie mit C-x C-b in einem abgetrennten Bereich, der als Fenster bezeichnet wird. Mit C-x 2 können Sie ein solches Fenster selbst erzeugen; C-x 4 f Dateiname öffnet eine neue Datei in einem separaten Fenster. Mit C-xo wechseln Sie zwischen den beiden Fenstern hin und her. Mit M-C-v können Sie den Inhalt des Fensters scrollen, in dem Sie zurzeit nicht arbeiten. C-x 1 schließt das nicht aktive Fenster und behält nur das aktuelle.
Je nach Dateityp (den Emacs, ähnlich wie Windows, an der Dateiendung erkennt) befinden Sie sich in einem der verschiedenen Emacs-Arbeitsmodi, die vor allem Programmierern das Leben erleichtern. Einige der wichtigsten Modi sind Fundamental (der grundlegende Modus für einfachen Text), C (für die gleichnamige Programmiersprache) oder HTML (zum Editieren von Webseiten). Jeder dieser Modi verfügt über besondere Funktionen wie automatische Einrückung, Anzeigen der korrespondierenden Klammer beim Schließen oder Ähnliches.
Sie können den Modus auch manuell über M-x Modusname wechseln: M-x fundamental wechselt beispielsweise in den Fundamental Mode, M-x c-mode in den C-Modus oder M-x html-mode in den HTML-Modus. M-x Schlüsselwort dient allgemein der Eingabe eines Befehls in der Langform und muss jeweils mit abgeschlossen werden. Wenn Sie einfach M-x eingeben, wird eine Liste aller möglichen Befehle angeboten; alternativ können Sie auch einen oder mehrere Anfangsbuchstaben eines Befehls eintippen und erhalten dann eine Liste der passenden Befehle.
Der einzeilige Bereich am unteren Bildschirm- oder Fensterrand, in den Sie mit M-x gelangen, wird Minibuffer genannt. Sie können ihn durch dreimaliges Drücken von wieder verlassen.
Zeichenweise durch den Text navigieren Sie mit den Pfeiltasten oder alternativ mit C-f (nach rechts, forward), C-b (nach links, backward), C-p (nach oben, previous line) und C-n (nach unten, next line). C-a bewegt den Cursor zum Zeilenbeginn und C-e zum Zeilenende. C-v scrollt um einen ganzen Bildschirm nach unten, M-v nach oben. M-f wandert um ein Wort nach rechts, M-b nach links. M-< springt zum Anfang der gesamten Datei, M-> ( + + ) zu ihrem Ende.
C-d löscht das Zeichen unter dem Cursor, während das vorherige Zeichen entfernt. M-d löscht das folgende Wort, M- das vorige. C-k tilgt den Bereich vom Cursor bis zum Ende der Zeile.
C-Leertaste setzt eine Markierung. Der markierte Bereich reicht automatisch von der gesetzten Markierung bis zur aktuellen Cursorposition. Um den gesamten Bereich zu löschen, genauer gesagt auszuschneiden, wird die Tastenkombination C-w verwendet. M-w kopiert den Bereich dagegen zum späteren Einfügen. In beiden Fällen können Sie ihn mithilfe von C-y wieder einfügen.
C-s leitet eine inkrementelle Suche ein – während der Eingabe des Suchbegriffs springt der Cursor zur jeweils nächstgelegenen Stelle, die diesem Begriff entspricht. Entsprechend sucht C-r rückwärts. C-s C-s wiederholt die letzte Suche. verlässt das Suchprogramm vollständig. M-C-s sucht nach einem regulären Ausdruck statt einer einfachen Zeichenfolge. Die Syntax der regulären Ausdrücke entspricht grep.
M-% ist der Befehl zum Suchen und Ersetzen. Zunächst wird nach der zu ersetzenden Zeichenfolge gefragt, anschließend nach dem Ersetzungstext. Die Eingabe beider Zeichenfolgen muss mit abgeschlossen werden. An jeder einzelnen Fundstelle werden Sie gefragt, ob Sie die Ersetzung durchführen möchten. oder Leertaste bedeutet ja, oder steht für nein, und heißt, dass alle künftigen Fundstellen ohne weitere Rückfrage ersetzt werden sollen.
Wenn Sie Ihre aktuelle Arbeit speichern möchten, verwenden Sie dazu den Befehl C-x C-s. C-x s speichert alle geänderten Buffer auf einmal. C-x C-w Dateiname sichert die Datei dagegen unter dem angegebenen neuen Namen. Mit C-x C-c beenden Sie Emacs. Vorher werden Sie gefragt, ob Sie die modifizierten Buffer speichern möchten.
Was bereits über den vi gesagt wurde, gilt für Emacs erst recht: Es gibt Unmengen weiterer Befehle, für die in diesem Buch leider kein Platz ist. Mit dem hier gebotenen Ausschnitt aus der Funktionsvielfalt von Emacs können Sie beliebige Textdateien bearbeiten. Mit etwas Übung werden Sie damit irgendwann schneller arbeiten können als mit einem grafisch orientierten Editor, in dem Sie oft zur Maus greifen müssen, um spezielle Befehle zu verwenden. Dennoch ist auch der Emacs mit einem umfangreichen Menü ausgestattet, solange er in einer GUI läuft. Da die Tastenkürzel jeweils neben den einzelnen Menübefehlen stehen, können Sie mithilfe des Menüs leicht neue Befehle erlernen.
Auch für Emacs folgt in Tabelle 7.5 eine etwas ausführlichere Kommandoliste.
Tastenkürzel/Befehl | Bedeutung |
Dateien, Buffer und Fenster |
|
C-x C-f Dateiname |
Die angegebene Datei laden (Emacs-Begriff visit). Falls sie noch nicht existiert, wird sie neu angelegt. |
C-x C-v |
den Namen der aktuellen Datei im Minibuffer anzeigen, um ihn zu editieren und die resultierende Datei zu laden/anzulegen |
C-x i Dateiname |
die angegebene Datei an der aktuellen Cursorposition in die derzeitige Datei einfügen |
C-x b Buffername |
zum Buffer mit dem angegebenen Namen wechseln |
C-x k [Buffername] |
den angegebenen bzw. den aktuellen Buffer schließen |
C-x C-b |
Liste aller derzeit geöffneten Buffer in separatem Fenster (Abschnitt) |
e oder f |
in der Bufferliste den aktiven Buffer im anderen Fenster öffnen |
d |
in der Bufferliste einen Buffer zum Löschen markieren |
s |
in der Bufferliste einen Buffer zum Speichern markieren |
u |
in der Bufferliste eine Markierung aufheben |
x |
in der Bufferliste alle markierten Lösch- und Speichervorgänge ausführen |
C-x 2 |
ein zweites Fenster erzeugen |
C-x 4 f Dateiname |
die angegebene Datei in einem neuen Fenster öffnen/erstellen |
C-x o |
Wechsel zum jeweils anderen Fenster (auch in die Bufferliste) |
C-x v |
im jeweils anderen Fenster scrollen |
C-x 1 |
Das nicht aktive Fenster schließen |
Zähler |
|
C-u n Befehl |
den angegebenen Befehl so oft durchführen, wie durch die Anzahl n angegeben |
M-n Befehl |
den angegebenen Befehl so oft durchführen, wie durch die Anzahl n angegeben |
Navigation im Text |
|
C-f |
Cursor um ein Zeichen nach rechts bewegen (forward) |
C-b |
Cursor um ein Zeichen nach links bewegen (backward) |
C-p |
Cursor um eine Zeile nach oben bewegen (previousline) |
C-n |
Cursor um eine Zeile nach unten bewegen (nextline) |
M-b |
Cursor um ein Wort nach rechts bewegen |
M-f |
Cursor um ein Wort nach links bewegen |
C-a |
Cursor zum Zeilenanfang bewegen |
C-e |
Cursor zum Zeilenende bewegen |
M-a |
Cursor zum vorigen Satzbeginn bewegen |
M-e |
Cursor zum nächsten Satzbeginn bewegen |
C-v |
um einen ganzen Bildschirm nach unten scrollen |
M-v |
um einen ganzen Bildschirm nach oben scrollen |
M-< |
Cursor zum Textanfang bewegen |
M-> |
Cursor zum Textende bewegen |
Löschen |
|
C-d |
das Zeichen unter dem Cursor löschen |
Backspace |
das Zeichen links vom Cursor löschen |
M-d |
das folgende Wort löschen |
M-Backspace |
das vorige Wort löschen |
C-k |
vom Cursor bis zum Ende der Zeile löschen |
M-k |
vom Cursor bis zum Satzende löschen |
C-t |
das aktuelle und das vorherige Zeichen vertauschen |
Markieren, Kopieren und Einfügen |
|
C-Leertaste |
Markierung setzen |
C-w |
den Text von der Markierung bis zur aktuellen Cursorposition ausschneiden |
M-w |
den Text von der Markierung bis zur aktuellen Cursorposition kopieren |
C-y |
den zuletzt ausgeschnittenen oder kopierten Text an der aktuellen Cursorposition einfügen |
M-y |
durch die zuvor ausgeschnittenen oder kopierten Texte »blättern«, um den richtigen auszusuchen |
Suchen und Ersetzen |
|
C-s |
inkrementelle Suche vorwärts einleiten |
C-r |
inkrementelle Suche rückwärts einleiten |
C-s C-s |
erneut nach dem vorherigen Suchbegriff suchen |
Enter |
den Suchmodus verlassen |
M-C-s |
nach einem regulären Ausdruck statt nach einem einfachen String suchen |
M-% |
interaktives Suchen und Ersetzen: Suchbegriff eingeben, Ersetzungsstring eingeben, für jede Stelle mit y oder Leertaste bestätigen, mit n oder Entf ablehnen, oder mit ! für alle Fundstellen bestätigen |
Speichern und Beenden |
|
C-x C-s |
den aktuellen Buffer speichern |
C-x s |
alle Buffer (mit Nachfrage) speichern |
C-x C-w Dateiname |
die aktuelle Datei unter dem angegebenen neuen Namen speichern |
C-x C-c |
Emacs beenden (mit Nachfrage, ob die geänderten Buffer gespeichert werden sollen) |
Abgesehen davon können Sie diesen Editor völlig frei konfigurieren. Zum einen können Sie die Tastenkürzel selbst frei belegen, zum anderen ist der Emacs beliebig erweiterbar: Er ist mit einer eigenen Variante der Programmiersprache LISP ausgestattet. Diese Sprache könnte Programmierer durch ihren eigenwilligen Ansatz abschrecken, sie ist aber speziell an die Funktionen von Emacs angepasst und erleichtert so das Programmieren von Zusatzfunktionen.
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.