Ein System wäre nicht brauchbar, wenn es nicht möglich wäre,
Dateien zu bearbeiten. Neben besonderen Werkzeugen zur
Manipulation von Textdaten wie z.B. awk, sed, perl, ed, tr
etc. bieten Editoren die Möglichkeit gesamte Dateien interaktiv zu
bearbeiten.
Ähnlich wie bei DOS, wo es einen Standardeditor (nämlich edit) und
eine Vielzahl komfortablerer Editoren gibt, sieht die Situation
auch unter Linux aus. Auf fast jedem Unix-System existiert ein vi
(gesprochen: "Wie Ei", Abkürzung für Visual Editor). Wem dieser
Editor nicht zusagt - und das wird gerade bei Einsteigern der Fall
sein - der kann sich aus einer Vielzahl von verfügbaren Editoren
(siehe Tabelle) einen passende aussuchen.
Die meisten Linux-Distributionen bieten während der Installation
eine Vielzahl von Editoren an. Sollten Sie sich mit all diesen
nicht so recht anfreunden können, dann haben Sie immer noch die
Möglichkeit einen passenden aus einem Software-Archiv im Internet
zu holen.
Der wichtigste FTP-Server für Linux-Software ist SunSITE.unc.edu
(an der University of North Carolina), der weltweit auf vielen
Servern gespiegelt wird (z.B. ftp.gwdg.de). Dort sind im
Verzeichnis /pub/Linux/apps/editors verschiedene Editoren
archiviert. Hier ist für jeden Geschmack etwas dabei.
Welche Funktionen bieten Editoren
An dieser Stelle werden wir nicht jeden Editor einzeln vorstellen,
sondern die Grundfunktionen beschreiben und die wichtigsten
Vertreter genauer untersuchen. Dabei wird dem vi als
Standard-Editor für Unix besondere Aufmerksamkeit gewidmet.
Die verschiedenen Editoren bieten eine Vielzahl von Möglichkeiten
sowie unterschiedliche Arten der Steuerung. So hat der vi
z.B. drei Modi, in denen man Eingaben vornehmen kann, der Emacs
zwei und die meisten anderen Editoren nur einen.
Maussteuerung
Editoren, die unter X11 laufen, können natürlich mit der Maus
gesteuert werden. Auf der Textkonsole sieht das ganze jedoch
schon schwieriger aus. Hier wird die Maus nicht wie ein eigenes
Eingabegerät betrachtet. Um dort ebenfalls Mausunterstützung zu
erhalten, wurde das Programm gpm (General Purpose Mouse
Interface) entwickelt. Als Basisfunktionalität bietet es Cut &
Paste auf der Konsole, in Erweiterung jedoch auch eine
Bibliothek, mit deren Hilfe Programme die Maus als Eingabegerät
unterstützen können. Emacs und jed können davon z.B. Gebrauch
machen.
Context-Highlightning
Text wird in unterschiedlichen Farben dargestellt, je nachdem, ob
es sich um normale Zeichenketten, Schlüsselworte, Klammern,
Funktionen etc. handelt. Durch unterschiedliche Einfärbung von
Passagen wird die Lesbarkeit von Programmen gefördert. Diese
Technik wird übrigens auch bei den Borland-Programmier-Editoren
eingesetzt. Einige Vertreter unter Linux sind: Emacs, jed, fte
etc.
Multi-Document
Bei vielen Aufgaben ist es wichtig, daß man mehrere Dateien
gleichzeitig bearbeiten und Text zwischen ihnen austauschen kann.
Diese Möglichkeit bietet jedoch nicht jeder Editor, z.B. sind der
originale vi oder xedit nur in der Lage, eine einzige Datei zu
bearbeiten. Die größeren Editoren bieten jedoch alle diese
Möglichkeit.
Blockbearbeitung
Oft ist nötig einzelne Blöcke (z.B. die nächsten 10 Zeilen)
auszuschneiden, zu kopieren oder getrennt vom restlichen Dokument
zu behandeln (z.B. durch Ersetzen von Zeichenketten). Vi und
höherwertige Editoren bieten dieses. Einige können jedoch nur die
wichtigsten Operationen wie Löschen, Kopieren und Einfügen anbieten,
jedoch kein Suchen-und-Ersetzen in einem Block.
Undo-Funktion
Dieses ist eine ziemlich wichtige Funktion. Sie ermöglicht es,
Fehler wieder rückgängig zu machen. Hier unterscheiden sich die
Editoren ebenfalls. Während einige Vertreter, z.B. Emacs und
vile, einen unendlich großen Undo-/Redo-Puffer bieten, haben
andere lediglich mehrere, eine oder keine Ebene, die sie
rückgängig machen können.
Programmierung
Wenn sich der Editor frei programmieren läßt, wie es z.B. beim
Emacs und jed der Fall ist, dann läßt er sich bis zum
i-Tüpfelchen auf die Bedürfnisse des Anwenders anpassen -
entsprechendes Wissen über die verwendete Sprache vorausgesetzt.
Automatisches Formatieren
Wer strukturierte Texte schreiben möchte, der macht von
Einrückungen und Zeilenumbrüchen Gebrauch. Bessere Editoren
bieten daher die Möglichkeit, Zeilen während der Eingabe ab einer
gewissen Position automatisch umzubrechen und in der nächsten
weiterzuschreiben (auto-fill). Viele Editoren erleichtern einem
das Schreiben zusätzlich mit der Möglichkeit automatisch richtig
einzurücken (auto-indent).
Programmier-Modi
Für Programmierer interessant sind spezielle Modi, welche die
Strukturierung der Programme erleichtern. Neben Anweisungen wie
bestimmte Programmfragmente zu färben sind, enthalten sie meist
Algorithmen, den Programmcode automatisch passend einrücken.
Textbearbeitung umfaßt mehrere Aufgabenbereiche. Viele Leute
setzen unterschiedliche Editoren für verschiedene Aufgaben ein. Es
macht durchaus Sinn, den Editor gemäß der zu erledigenden Aufgaben
auszusuchen. Für Kleinigkeiten wie z.B. das Ändern von
Konfigurationsdateien eignet sich ein kleiner Editor wie ae, vi
oder ee. Hier werden normalerweise nur Basisfunktionen benötigt.
Sollen Mails oder News-Artikel geschrieben werden, dann kommt es
vor, daß man Passagen aus anderen Dateien einfügen oder seinen
Text mit einem anderen vergleichen muß. Hier eigenen sich
kleine Editoren, die mehrere Dateien gleichzeitig bearbeiten können
wie z.B. jed, vim oder elvis.
Für Programmierer sind die großen Editoren von Vorteil, die alle
oben aufgezählten Fähigkeiten vereinen. Daher verwenden viele
Leute einen der verschiedenen Emacs-Varianten zum Programmieren
oder sogar als Allround-Umgebung.
Der Visual Editor vi
Auf fast jedem Unix-System ist per se ein vi zu finden. Allein
deshalb sollten die wichtigsten Befehle bekannt sein. Da dieser
Editor zudem noch recht klein ist, bietet er sich auch zur
Systemadministration an. Aufgrund seiner geringen Anforderungen an
das System und Terminal, ist der vi auch unter ungünstigen
Bedingungen benutzbar.
Sollte er sich über fehlende Terminal-Einstellungen beschweren,
dann setzen Sie die TERM-Variable auf 'linux', 'xterm' oder
'vt100', je nachdem, wo sie sich gerade befinden. Meistens paßt
die Emulation dann - insbesondere, wenn Sie sich von Linux aus auf
einem anderen Unix-System einloggen.
Intuitive Bedienung
Der vi sieht zwar recht spartanisch aus, bietet dafür jedoch einen
erstaunlichen Funktionsumfang. Da dieser Editor auf den ersten
Blick jedoch alles andere als intuitiv zu bedienen ist,
verzweifelten in der Vergangenheit viele Einsteiger daran. Wer
sich jedoch länger mit Unix beschäftigt, wird einige im vi
enthaltenen Konzepte in anderen Programmen wiederfinden - und diese
intuitiv bedienen können.
Abbildung 1: Die Modi vom VI
Um den vi zu verstehen, muß man sich zuerst vor Augen führen, daß
er drei Modi besitzt, in denen er unterschiedliche Eingaben von der
Tastatur erwartet. Im Standardmodus piept er einfach bei
ungültigen Eingaben. Abbildung 1 zeigt diese drei Modi sowie
Übegänge von einem in den anderen.
Wenn der vi gestartet wird, befindet man sich im Befehlsmodus. In
diesem können keine Eingaben vorgenommen werden, weshalb es
vorkommen kann, daß auf Eingaben mit unmotiviertem Gepiepse
geantwortet wird. Sie haben die Möglichkeit auf sechs Arten Text
einzufügen. Folgende Tabelle gibt Aufschluß über die Unterschiede.
a
Text rechts vom Cursor einfügen
A
Text am Zeilenende einfügen
i
Text an Cursurposition einfügen
I
Text am Zeilenanfang einfügen
o
Eine neue Zeile nach dieser einfügen und am
Anfang der Zeile Text einfügen
O
Eine neue Zeile vor der aktuellen einfügen
und dort am Zeilenanfang Text einfügen
Tabelle 1: Bedeutung der Einfügebefehle
Im Eingabemodus sollten die normalen Cursortasten funktionieren.
Mit ESC gelangt man wieder zurück in den Befehlsmodus. Dort kann
man den Cursor mit den VI-typischen Befehlen bewegen (siehe
Abb. 2). Da der vi aus der Zeit einfacher Text-Terminals ohne
spezielle Cursortasten stammt, kann er auch komplett ohne diese
gesteuert werden. Wer das 10-Finger-System beherrscht, der hat im
Befehlsmodus unter dem rechten Zeigefinger die Taste "Cursor down"
und unter dem Mittelfinger "Cursor up". Jeweils eine Taste weiter
links bzw. rechts liegen die Tasten für Cursorbewegungen nach links
bzw. nach rechts. Eigentlich ganz einfach, oder? Mit den Tasten
'w' und 'b' kann wortweise vor und zurück gesprungen werden.
Abbildung 2: Cursor-Steuerung im VI
Den Kommandos zur Cursorsteuerung können Zahlen vorangestellt
werden. In diesem Fall wird der Befehl entsprechend oft
ausgeführt. 10j positioniert den Cursor demnach 10 Zeilen weiter
unten.
j
Eine Zeile nach unten
k
Eine Zeile nach oben
h
Ein Zeichen nach links
l
Ein Zeichen nach rechts
^
Zum Anfang der Zeile
$
Zum Ende der Zeile
0
Zum ersten Zeichen der Zeile
Zum Ende der Zeile
(
Zum Anfang des aktuellen oder vorherigen Satzes
)
Zum Ende des aktuellen oder nächsten Satzes
{
Zum Anfang des aktuellen bzw. vorherigen Absatzes
}
Zum Ende des aktuellen bzw. nächsten Absatzes
Tabelle 2: Cursorsteuerung im vi
Zum Löschen sind die Tasten 'd' und 'x' vorgesehen. 'x' löscht das
Zeichen unter dem Cursor, während 'X' links neben dem Cursor
löscht. 'D' löscht bis zum Zeilenende und 'd' löscht einzelne
Zeilen, benötigt jedoch zusätzlich ein Richtungsargument, ein
zweites 'd' für die aktuelle Zeile oder ein Zeichen zur vertikalen
Cursorsteuerung (siehe Tabelle 2). Den Befehlen 'x', 'X' und 'd'
können zusätzlich die Anzahl der zu löschenden Zeilen/Zeichen
vorangestellt werden.
Der Kommandozeilenmodus
Vom Befehlsmodus gelangt man mit einem Doppelpunkt in den
Kommandozeilenmodus, in dem z.B. Dateioperationen vorgenommen und
Optionen geändet werden können. Die wichtigsten Befehle sind hier
:write, :quit und :quit!. Der erste speichert die aktuelle Datei,
der zweite beendet den vi und der dritte beendet ihn sofort, ohne
zu speichern.
Im Komandozeilenmodus können die meisten Befehle abgekürzt werden.
Hinter einige Befehle kann ein Ausrufezeichen gesetzt werden, um
den vi dazu zu "überreden", die Operation sogar dann auszuführen,
wenn er sich normalerweise weigern würde, insbesondere, wenn eine
Datei nicht gespeichert wurde. Damit ist vorsichtig umzugehen.
Mit :write wird der aktuelle Puffer gespeichert. Wird zusätzlich
ein Dateiname angegeben, dann wird eine neue Datei angelegt. Wenn
diese bereits existiert, verweigert der vi seinen Dienst - es sei
denn, es wurde zusätzlich ein Ausrufezeichen angegeben.
Der Befehl :read liest die als Parameter angegebene Datei ein und
fügt sie in der nächsten Zeile in den aktuellen Puffer ein. Fängt
der Dateiname mit einem Ausrufezeichen an, so wird er wie ein
Shell-Befehl aufgefaßt, dessen Ausgabe in den aktuellen Puffer
eingefügt werden soll.
Mit dem vi kann man mehrere Dateien gleichzeitig bearbeiten.
Werden ihre Dateinamen in der Kommandozeile angegeben, dann merkt
er sie sich. Mit :args kann diese Liste eingesehen werden, wobei
die aktuelle Datei besonders gekennzeichnet wird. Zwischen den
Dateien kann mit den Befehlen :next und :previous gewechselt
werden.
Will man eine zusätzliche Datei konsultieren, so kann sie mit :edit
eingelesen werden. Die ursprüngliche Datei im Puffer muß dazu
allerdings erst gespeichert werden. Auf die alte Datei kann man
jederzeit mit Ctrl-^ zurückschalten.
Wichtig für die Manipulation von Textdateien ist auch die
Möglichkeit Zeichenketten durch andere zu ersetzen. Dieses
geschieht mit dem Befehl :substitute, der als Parameter zwei
Zeichenketten erwartet. Diese werden voneinander und von dem
Befehlsnamen bzw. dessen Kürzel durch ein beliebiges Zeichen
getrennt - es muß jedoch beide Male das gleiche sein.
Normalerweise wird dieser Befehl nur ein einziges Mal ausgeführt.
Er kann erweitert werden, wenn vor dem Befehlsnamen ein Bereich in
der Form "von,bis" angegeben wird. Anstelle der zweiten
Zeilennummer kann das Dollarzeichen verwendet werden, welches das
Dateiende repräsentiert. Wird vor den Befehl ein Prozentzeichen
gesetzt, so bezieht er sich auf die gesamte Datei. Soll die
Zeichenkette ggf. mehrfach in einer Zeile ersetzt werden, dann muß
der Befehl mit dem Trenner und einem 'g' (g wie global) beendet
werden.
":%s/Martin/Joey/g" ersetzt dann in der gesamten Datei die
Zeichenkette "Martin" durch "Joey", auch wenn sie mehrfach in einer
Zeile vorkommt.
Um Zeichenketten im Text zu suchen, reicht es, dieser einen
Schrägstrich bzw. ein Fragezeichen für die Suche rückwärts
voranzustellen. Der vi versteht reguläre Ausdrücke, entsprechende
Sonderzeichen wie '/', '\', '^' etc. müssen daher gesichert
eingegeben werden, indem ihnen ein Backslash vorangestellt wird.
Befehl
Kurz
Beschreibung
:help
:h
Zeige Hilfedatei
:write
:w [file][!]
Datei speichern
:wq
Speichern und beenden
:quit
:q [!]
VI beenden
:read
:r datei
Datei einlesen
:args
:r
Zeige Argumentliste
:next
:n [!]
Zur nächsten Datei wechseln
:previous
:prev
Zur vorherigen Datei wechseln
:rewind
:rew
Zur ersten Puffer wechseln
:last
:la
Zur letzten Datei wechseln
:
In Zeile n springen
:substitute
:s/s1/s2
Zeichenkette s1 durch s2 ersetzen
:global
:g
Zeichenkette suchen
:set
:se
Optionen ändern
:abbrev
:ab
Abkürzung definieren
Tabelle 3: Die wichtigsten Befehle
Das Verhalten wird mit Optionen kontrolliert
Mit dem Befehl ":set" können verschiedene Optionen geändert werden.
Diese bestimmen das Verhalten des Editors. Damit können
z.B. Zeilennummern oder automatisches Einrücken ein- und
ausgeschaltet werden. Die Liste aller Optionen samt ihrer Werte
kann mit ":set all" eingesehen werden.