Copyright © 1995 by O'Reilly/International Thomson Verlag

Bitte denken Sie daran: Sie dürfen zwar die Online-Version ausdrucken, aber diesen Druck nicht fotokopieren oder verkaufen.

Wünschen Sie mehr Informationen zu der gedruckten Version des Buches "Linux - Wegweiser zur Installation & Konfiguration", dann klicken Sie hier.


Kapitel 5


Power-Tools
In diesem Kapitel werden wir eine Reihe von weitverbreiteten Anwendungen für Linux vorstellen. Wir beginnen mit der Bearbeitung von Texten, die zu fast jeder anderen Nutzung des Systems gehört. (Sie brauchen einen Editor, wenn Sie eine Datei von nicht-trivialer Größe erstellen; sei es ein zu kompilierendes Programm, eine Konfigurationsdatei für das System oder eine E-Mail-Nachricht an einen Freund.) Anhand eines Beispiels besprechen wir mehrere Textformatierer, mit denen Sie attraktive Dokumente erstellen können.

Anschließend zeigen wir Ihnen, wie Sie das X Window System installieren und nutzen. Wir besprechen, wie Sie Zugriff auf Dateien und Programme erhalten, die für MS-DOS und Windows entwickelt wurden. Dies sind die Power-Tools aus Ihrer Linux-Werkzeugkiste, mit denen Sie vertraut sein müssen. Wir werden auch auf Multimedia eingehen, heutzutage ein heißes Thema. Fast alle wichtigen Anwendungen, mit denen Sie unter Linux arbeiten werden, sind als freie Software erhältlich.

Dateien editieren mit vi

In diesem Abschnitt werden wir die Textbearbeitung mit vi besprechen. vi war der erste vollwertige Editor für UNIX-Syteme, der den ganzen Bildschirm nutzte. Er ist einfach, klein und pfiffig. Für Systemverwalter ist es fast ein Muß, den vi kennenzulernen -- oft werden Sie in Notfällen keinen großen Editor wie Emacs zur Verfügung haben (z.B. wenn Sie Linux von einer Rettungsdiskette booten).

vi folgt derselben Philosophie wie viele andere UNIX-Anwendungen auch -- nämlich daß jedes Programm eine bestimmte, überschaubare Funktion erfüllen und daß es mit anderen Programmen zusammenarbeiten soll. So verfügt vi z.B. nicht über eine eigene Rechtschreibprüfung oder eine Funktion zum Formatieren von Absätzen, aber diese Aufgaben werden von anderen Programmen erledigt, die sich mühelos aus dem vi heraus aufrufen lassen. Der vi selbst ist also in gewisser Weise eingeschränkt, aber er kann mit anderen Anwendungen so zusammenarbeiten, daß Ihnen praktisch alle gewünschten Funktionen zur Verfügung stehen.

Wahrscheinlich kommt Ihnen vi zunächst ziemlich komplex und unhandlich vor. Trotzdem sind seine einbuchstabigen Befehle sehr schnell und mächtig, sobald Sie sie einmal gelernt haben. Im Anschluß an den vi werden wir Emacs beschreiben, einen wesentlich flexibleren Editor, der einfacher zu lernen ist. Denken Sie aber stets daran, daß Sie vielleicht einmal auf Ihre vi -Kenntnisse angewiesen sind, wenn Emacs nicht zur Verfügung steht; wir empfehlen deshalb, daß Sie auf jeden Fall einige vi -Grundlagen lernen, auch wenn Ihnen das seltsam erscheint.

vi aufrufen

Lassen Sie uns vi starten und eine Datei editieren. Die Syntax ist:

vi dateiname 

Mit:

eggplant$ vi test

editieren Sie die Datei test . Der Bildschirm sollte etwa so aussehen:

-------------------------------------------------
| _                 				| 
| ~                 				| 
| ~                 				| 
| ~                 				| 
| ~                 				|	 
| ~                 				| 
| "test" [New file] 				| 
-------------------------------------------------

Die Spalte mit den ~-Zeichen weist darauf hin, daß Sie sich am Ende der Datei befinden.

Text einfügen und sich im Text bewegen

Während Sie mit vi arbeiten, befinden Sie sich immer in einem von drei Modi. Diese Modi sind der Befehlsmodus (command mode), der Editiermodus (edit mode) und der Ex-Modus (extended mode; erweiterter Modus).

Nach dem Start von vi befinden Sie sich im Befehlsmodus. Dieser Modus dient der Eingabe von (meist einbuchstabigen) Befehlen, mit denen Texte bearbeitet werden (wir kommen gleich darauf). Der Text selbst wird im Editiermodus eingegeben. Drücken Sie i, wenn Sie mit der Eingabe des Textes beginnen möchten (mit i gelangen Sie in den Editiermodus).

--------------------------------------------------------------------
| Now is the time for all good men to come to the aid of the party.|
| ~                                                                |
| ~                                                                |
| ~                                                                |
| ~                                                                |
| ~                                                                |
-------------------------------------------------------------------

Sie können so viele Textzeilen eingeben, wie Sie möchten (mit einem RETURN am Ende jeder Zeile) und mit der BACKSPACE-Taste Tippfehler korrigieren. Drücken Sie die ESCAPE-Taste, wenn Sie aus dem Editiermodus in den Befehlsmodus zurückkehren wollen.

Im Befehlsmodus können Sie entweder die Pfeiltasten oder die Tasten h, j, k und l benutzen, um den Cursor im Text nach links, unten, oben bzw. rechts zu bewegen.

Außer dem Befehl i gibt es mehrere andere Möglichkeiten, Text einzufügen. Der Befehl a (für »append«; anhängen) fügt Text hinter der aktuellen Cursorposition ein. Ein Beispiel: Benutzen Sie den Pfeil-nach-links, um den Cursor zwischen »good« und »men« zu bewegen:

--------------------------------------------------------------------
| Now is the time for all good_men to come to the aid of the party.|
| ~                                                                |
| ~                                                                |
| ~                                                                |
| ~                                                                |
| ~                                                                |
-------------------------------------------------------------------

Drücken Sie jetzt a, tippen Sie »wo« und kehren Sie dann mit der ESC-Taste in den Befehlsmodus zurück:

----------------------------------------------------------------------
| Now is the time for all good women to come to the aid of the party.|
| ~                                                                  |
| ~                                                                  |
| ~                                                                  |
| ~                                                                  |
| ~                                                                  |
---------------------------------------------------------------------

Wenn Sie unter der aktuellen Zeile eine Leerzeile einfügen und dort Text eingeben möchten, benutzen Sie den Befehl o. Drücken Sie o und geben Sie eine oder zwei Textzeilen ein:

------------------------------------------------------------------------
| Now is the time for all good women to come to the aid of the party.  |
| Afterwards, we'll go out for pizza and beer.			       |
| ~                                                                    |
| ~                                                                    |
| ~                                                                    |
| ~                                                                    |
------------------------------------------------------------------------

Denken Sie daran, daß Sie sich zu jeder Zeit entweder im Befehlsmodus (wo Befehle wie i, a und o wirksam sind) oder im Editiermodus befinden (wo Sie Text eingeben und anschließend mit ESC wieder in den Befehlsmodus gehen). Falls Sie einmal nicht sicher sind, in welchem Modus Sie sich befinden, drücken Sie einfach die ESC-Taste. Sie verlassen damit den Editiermodus, falls Sie vorher dort waren und bewirken gar nichts, falls Sie bereits im Befehlsmodus sind.

Text löschen und Änderungen rückgängig machen

Im Befehlsmodus löscht der Befehl x das Zeichen unter dem Cursor. Wenn Sie x fünfmal drücken, erhalten Sie:

------------------------------------------------------------------------
| Now is the time for all good women to come to the aid of the party.  |
| Afterwards, we'll go out for pizza and_				|
| ~                                                                    |
| ~                                                                    |
| ~                                                                    |
| ~                                                                    |
------------------------------------------------------------------------

Drücken Sie jetzt a, geben Sie neuen Text ein und schließen Sie mit ESC ab:

------------------------------------------------------------------------
| Now is the time for all good women to come to the aid of the party.  |
| Afterwards, we'll go out for pizza and Diet Coke		       | 
| ~                                                                    |
| ~                                                                    |
| ~                                                                    |
| ~                                                                    |
------------------------------------------------------------------------

Sie können mit dem Befehl dd ganze Zeilen löschen (also d zweimal direkt hintereinander). Wenn Ihr Cursor in der zweiten Zeile steht, erhalten Sie mit dd:

------------------------------------------------------------------------
| Now is the time for all good women to come to the aid of the party.  |
| ~                                                                    |
| ~                                                                    |
| ~                                                                    |
| ~                                                                    |
| ~                                                                    |
------------------------------------------------------------------------

Gelöschter Text kann mit dem Befehl p wieder eingefügt werden (für »put«; etwa: einfügen). Wenn Sie jetzt p drücken, wird die gelöschte Zeile wieder in den Textpuffer eingefügt, und zwar hinter der aktuellen Zeile. Mit einem P (großes P) wird die gelöschte Zeile statt dessen vor der aktuellen Zeile eingefügt. Als Voreinstellung benutzen p und P zum Einfügen den »undo buffer« (Puffer, um Befehle rückgängig zu machen). Wir werden weiter unten noch sehen, daß Sie zum Löschen und Wiedereinfügen auch andere Puffer benutzen können.

Der Befehl u macht die letzte Änderung rückgängig (in diesem Fall bewirkt ein u nach einem dd dasselbe wie ein p). Wenn Sie nach dem Befehl i eine größere Menge Text eingegeben haben, wird der gesamte neue Text wieder gelöscht, wenn Sie gleich nach der Texteingabe in den Befehlsmodus gehen und u drücken.

Mit dem Befehl dw löschen Sie das Wort, das sich unter dem Cursor befindet. Stellen Sie den Cursor auf das Wort »Diet« und drücken Sie dw:

------------------------------------------------------------------------
| Now is the time for all good women to come to the aid of the party.  |
| Afterwards, we'll go out for pizza and Coke    		       | 
| ~                                                                    |
| ~                                                                    |
| ~                                                                    |
| ~                                                                    |
------------------------------------------------------------------------

Text bearbeiten

Sie können mit dem Befehl R den Text ab der Cursorposition überschreiben. Stellen Sie den Cursor auf den ersten Buchstaben in »pizza«, drücken Sie R und geben Sie ein:

------------------------------------------------------------------------
| Now is the time for all good women to come to the aid of the party.  |
| Afterwards, we'll go out for burgers and fries.    		       | 
| ~                                                                    |
| ~                                                                    |
| ~                                                                    |
| ~                                                                    |
------------------------------------------------------------------------

Der Befehl r ersetzt ein einzelnes Zeichen unter dem Cursor. Dabei landen Sie nicht automatisch im Editiermodus, so daß Sie anschließend auch nicht mit ESC in den Befehlsmodus zurückkehren müssen.

Der Befehl ~ schaltet für das Zeichen unter dem Cursor zwischen Groß- und Kleinschreibung um. Wenn Sie den Cursor auf das »o« in »Now« stellen und einige Male die ~ drücken, erhalten Sie:

------------------------------------------------------------------------
| NOW IS THE TIME FOR ALL GOOD WOMEN TO COME TO THE AID OF THE PARTY.  |
| Afterwards, we'll go out for burgers and fries.    		       | 
| ~                                                                    |
| ~                                                                    |
| ~                                                                    |
| ~                                                                    |
------------------------------------------------------------------------

Den Cursor durch den Text bewegen

Sie wissen bereits, wie Sie sich mit den Cursortasten im Text umherbewegen. Außerdem können Sie mit dem Befehl w an den Anfang des nächsten Wortes springen; mit b gelangen Sie zum Anfang des Wortes, auf dem der Cursor steht. Der Befehl 0 (eine Null) bringt den Cursor an den Anfang der aktuellen Zeile, und mit $ bewegen Sie den Cursor an das Zeilenende.

Wenn Sie große Dateien bearbeiten, werden Sie auch bildschirmweise vorwärts oder rückwärts durch den Text blättern wollen. Drücken Sie dazu CTRL-F (vorwärts) und CTRL-B (rückwärts).

Drücken Sie G, um den Cursor an das Ende der Datei zu bringen. Sie können auch zu einer beliebigen Zeile springen: Der Befehl 10G würde den Cursor in der 10. Zeile des Textes plazieren. Benutzen Sie 1G, um an den Anfang der Datei zu springen.

Wenn Sie einen /, gefolgt von einem Suchmuster und RETURN eingeben, springt der Cursor vorwärts bis zum ersten Auftauchen dieses Musters im Text. Gehen Sie in unserem Beispiel mit dem Cursor in die erste Textzeile und geben Sie /burg und RETURN ein; der Cursor springt auf den Anfang von »burgers«. Mit einem ? statt des / wird die Datei rückwärts durchsucht.

Das Suchmuster hinter den Befehlen / und ? ist in Wirklichkeit ein regulärer Ausdruck (regular expression). Reguläre Ausdrücke bieten umfangreiche Möglichkeiten, die Muster für das Suchen-und-Ersetzen zu definieren, und viele UNIX-Utilities nutzen diese Ausdrücke. (Die Manual-Page zu ed beschreibt reguläre Ausdrücke im Detail.) Mit Hilfe eines regulären Ausdrucks könnten Sie z.B. nach dem nächsten Großbuchstaben suchen, indem Sie folgendes eingeben:

/[A-Z]

Wenn es also nicht eine bestimmte Zeichenfolge ist, die Sie finden möchten, können Sie mit regulären Ausdrücken genau das definieren, wonach Sie suchen.

Sie können Befehle zur Bewegung des Cursors mit anderen Befehlen, etwa zum Löschen, zusammen aufrufen. Mit d$ z.B. löschen Sie alles ab der Cursorposition bis zum Ende der Zeile; mit dG wird alles vom Cursor bis zum Ende der Datei gelöscht.

Datei speichern und vi verlassen

Die meisten der Befehle, die mit der Handhabung von Dateien zu tun haben, werden aus dem Ex-Modus (erweiterter Modus) des vi heraus aufgerufen. Sie gelangen in den erweiterten Modus, indem Sie im Befehlsmodus einen : eingeben. Dabei springt der Cursor in die letzte Bildschirmzeile, wo Sie weitere Befehle eingeben können.

Wenn Sie z.B. die editierte Datei abspeichern möchten, geben Sie :w ein. Der Doppelpunkt bringt Sie in den Ex-Modus und das w mit anschließendem ENTER schreibt die Datei. Mit :wq speichern Sie die Datei und verlassen zusätzlich vi . (Der Befehl ZZ -- im Befehlsmodus, ohne den »:« -- hat denselben Effekt wie :wq.)

Wenn Sie vi verlassen möchten, ohne Änderungen zu speichern, geben Sie :q! ein. Mit :q allein können Sie vi nur beenden, wenn alle Änderungen zuvor gespeichert worden sind. Das ! in :q! bedeutet, daß Sie vi beenden möchten, und daß es Ihnen damit ernst ist.

Eine andere Datei editieren

Wenn Sie eine andere Datei bearbeiten möchten, geben Sie den Befehl :e ein. Ein Beispiel: Falls Sie nicht mehr die Datei test sondern statt dessen foo editieren möchten, geben Sie ein:

------------------------------------------------------------------------
| NOW IS THE TIME FOR ALL GOOD WOMEN TO COME TO THE AID OF THE PARTY.  |
| Afterwards, we'll go out for burgers and fries.    		       | 
| ~                                                                    |
| ~                                                                    |
| ~                                                                    |
| ~                                                                    |
| :e foo_ 						
------------------------------------------------------------------------

Falls Sie :e aufrufen, ohne die Datei zuerst wegzuschreiben, erhalten Sie die Fehlermeldung:

---------------------------------------------------------
| 							|  
| No write since last change (:edit! overrides) 	| 
---------------------------------------------------------

An dieser Stelle können Sie entweder mit :w die erste Datei abspeichern und dann :e aufrufen, oder Sie geben statt dessen :e! test ein, um vi mitzuteilen, daß er die zweite Datei öffnen soll, ohne daß Änderungen an der ersten Datei geschrieben werden.

Andere Dateien einfügen

Mit dem Befehl :r lesen Sie den Inhalt einer anderen Datei in den Textpuffer von vi ein. Der Befehl:

:r foo.txt

würde den Inhalt der Datei foo.txt nach der aktuellen Zeile einfügen.

Shell-Befehle aufrufen

Der Befehl :! ermöglicht den Aufruf eines Shell-Befehls, der aus dem vi heraus ausgeführt wird. Mit dem Befehl:

:! ls -F

z.B. rufen Sie den Befehl ls auf und bekommen dessen Ausgabe auf dem Bildschirm angezeigt.

Der Befehl :r! funktioniert so ähnlich wie :!, aber die Standardausgabe des Befehls wird in den Textpuffer eingefügt. Mit dem Befehl:

:r! ls -F

erhalten Sie:

------------------------------------------------------------------------
| NOW IS THE TIME FOR ALL GOOD WOMEN TO COME TO THE AID OF THE PARTY.  |
| Afterwards, we'll go out for burgers and fries.    		       | 
| letters/                                                             |
| misc/                                                                |
| papers/                                                              |
| ~                                                                    |
------------------------------------------------------------------------

Falls Sie allerdings mehrere Shell-Befehle aufrufen möchten, ist es oft einfacher, den Unterbrechungscode (normalerweise CTRL-Z) zu benutzen. Voraussetzung dafür ist, daß Sie mit einer Shell wie tcsh oder bash arbeiten, die die Jobkontrolle unterstützt.

Globales Suchen und Ersetzen

vi bietet weitaus mehr Möglichkeiten, als wir hier beschreiben können; viele davon entstehen aus einer Kombination der einfachen Befehle, die wir bereits vorgestellt haben. Wir wollen hier noch einen oder zwei weitere Tricks zeigen, die die meisten Benutzer von vi gebrauchen können.

Mit dem Befehl:

:[x,y]s/altes-muster/neues-muster/flags

sucht vi im Textpuffer zwischen den Zeilen x und y nach allen Vorkommen von altes-muster , um sie durch den String neues-muster zu ersetzen. altes-muster ist ein regulärer Ausdruck; neues-muster ist eine exakte Zeichenfolge, die aber bestimmte Sonderzeichen enthalten kann, welche sich auf Teile von altes-muster beziehen. Der folgende Befehl ersetzt in den Zeilen 1 bis 10 einschließlich alle Vorkommen von weeble durch wobble:

:1,10s/weeble/wobble

Statt die Zeilen anzugeben, können Sie auch mit dem % die ganze Datei spezifizieren. Es gibt weitere Sonderzeichen, die Sie statt x und y benutzen können. Mit $ bezeichnen Sie die letzte Zeile der Datei. Wenn Sie entweder x oder y auslassen, wird dafür die aktuelle Zeile angenommen.

Zu den Flags, die Sie benutzen können, gehören g, mit dem Sie alle Vorkommen von altes-muster in einer Zeile ersetzen, sowie c, mit dem Sie jede einzelne Ersetzung bestätigen müssen. In den meisten Fällen werden Sie wahrscheinlich das g-Flag benutzen -- es sei denn, Sie möchten in jeder Zeile nur das erste vorkommende altes-muster ersetzen.

Sie haben auch die Möglichkeit, Markierungen (marks) zu setzen. Markierungen sind einbuchstabige Namen, die innerhalb einer Datei an einer bestimmten Cursorposition vergeben werden. Sie setzen eine solche Markierung, indem Sie den Cursor an die betreffende Stelle bewegen und dann z.B. ma eingeben. (Die Markierungen können mit den Buchstaben a-z oder A-Z benannt werden. Sie bewegen den Cursor direkt auf die Markierung a, indem Sie `a eingeben (rückwärts gewandte Anführung). Mit der Anführung vorwärts (wie in 'a) bewegen Sie den Cursor auf den Anfang der Zeile, in der die Markierung a steht.

Mit Hilfe der Markierungen können Sie sich Cursorpositionen »merken«, um ganze Textbereiche zu bezeichnen. Ein Beispiel: Wenn Sie in einem Textblock suchen und ersetzen wollen, bewegen Sie zunächst den Cursor an den Blockanfang, setzen dort eine Markierung, bewegen dann den Cursor zum Blockende, und geben folgenden Befehl ein:

:'a,.s/weeble/wobble

Dabei steht 'a für die Zeile, die die Markierung a enthält, und . bezeichnet die aktuelle Zeile.

Text verschieben, Register

Eine Möglichkeit, Text zu kopieren und zu verschieben haben wir bereits weiter oben beschrieben: Löschen Sie den Text (mit den Befehlen d oder dd) und fügen Sie ihn mit dem Befehl P wieder ein. Nehmen wir an, daß Sie ab der Zeile, in der der Cursor steht, zehn Zeilen löschen möchten, um diesen Textblock an anderer Stelle einzufügen. Geben Sie dazu den Befehl 10dd ein (um zehn Zeilen zu löschen), bewegen Sie den Cursor an die neue Textposition, und geben Sie p ein. Eine andere Möglichkeit ist folgende: Sie geben 10dd und, an derselben Cursorposition, P ein, um den Text zu löschen und sofort wieder zu restaurieren. Anschließend können Sie diesen Text auch an anderen Stellen einfügen, indem Sie wiederholt den Cursor an die jeweilige Zielposition bewegen und dort p eingeben.

Ähnlich wie dd funktioniert der Befehl yy, mit dem Sie Text kopieren, ohne ihn zu löschen. Auch mit yy kopierte Texte werden mit p wieder eingefügt. Die Befehle zum Löschen und Kopieren können nicht nur auf Zeilen angewendet werden. Erinnern Sie sich daran, daß der Befehl d die Löschungen mittels eines Cursorbefehls vornimmt; z.B. löscht d$ den Text von der Cursorposition bis zum Ende der Zeile. In ähnlicher Weise liest y$ den Text vom Cursor bis zum Zeilenende in den Kopierpuffer ein.

Nehmen wir an, daß Sie einen ganzen Textbereich kopieren (oder löschen) möchten. Auch dafür können Sie Markierungen benutzen. Bewegen Sie den Cursor auf den Anfang des zu kopierenden Textbereichs und setzen Sie dort eine Markierung, etwa mit ma. Bewegen Sie dann den Cursor an das Ende des Textes und geben Sie dort den Befehl y`a ein. Damit lesen Sie den Text von der Cursorposition bis zur Markierung a in den Kopierpuffer ein. (Erinnern Sie sich daran, daß der Befehl `a den Cursor zur Markierung a bewegt.) Wenn Sie statt y den Befehl d eingeben, wird der Textblock vom Cursor bis zur Markierung gelöscht.

Die einfachste Methode, innerhalb des vi Textblöcke auszuschneiden, zu kopieren und wieder einzufügen ist die Benutzung von Registern. Ein Register ist einfach ein temporärer, mit einem Namen versehener Speicher für Texte, die Sie hin- und herkopieren, ausschneiden, wieder einfügen möchten usw.

Die Register erhalten einbuchstabige Namen; alle Zeichen von a-z oder A-Z sind möglich. Mit dem Befehl " (doppelte Anführung) sprechen Sie ein Register an; dahinter steht der Name des Registers, wie in "a, mit dem das Register a bezeichnet wird.

Wenn wir den Cursor in unserem Beispiel in die erste Zeile bewegen:

------------------------------------------------------------------------
| NOW IS THE TIME FOR ALL GOOD WOMEN TO COME TO THE AID OF THE PARTY.  |
| Afterwards, we'll go out for burgers and fries.    		       | 
| ~                                                                    |
| ~                                                                    |
| ~                                                                    |
| ~                                                                    |
------------------------------------------------------------------------

und dann den Befehl "ayy eingeben, wird die aktuelle Zeile in das Register a eingelesen. Wir können den Cursor anschließend in die zweite Zeile bewegen und dort "ap eingeben, um den Text aus dem Register a hinter der aktuellen Zeile einzufügen:

------------------------------------------------------------------------
| NOW IS THE TIME FOR ALL GOOD WOMEN TO COME TO THE AID OF THE PARTY.  |
| Afterwards, we'll go out for burgers and fries.    		       | 
| NOW IS THE TIME FOR ALL GOOD WOMEN TO COME TO THE AID OF THE PARTY.  |
| ~                                                                    |
| ~                                                                    |
| ~                                                                    |
| ~                                                                    |
------------------------------------------------------------------------

In ähnlicher Weise wird mit dem Befehl "ay`a der Text von der Cursorposition bis zur Markierung a in das Register a eingelesen. Beachten Sie, daß Markierungs- und Registernamen nicht identisch sind!

Mit Hilfe der Register können Sie Text auch zwischen Dateien hin- und herbewegen. Kopieren Sie den Text einfach in ein Register, öffnen Sie mit :e eine neue Datei zum Editieren, und fügen Sie dort den Text aus dem Register ein.

vi erweitern

vi kann auf vielfache Weise erweitert werden. Die meisten der Befehle, die wir besprochen haben, lassen sich auf beliebige Textbereiche anwenden. Wir haben bereits gezeigt, daß Befehle wie d und y den Text von der Cursorposition aus mittels eines Befehls zur Cursorbewegung wie $ oder G bearbeiten. (dG z.B. löscht den Text vom Cursor bis zum Dateiende.) Viele andere Befehle benutzen bei der Bearbeitung von Texten die Cursorbefehle in ähnlicher Weise. Mit Hilfe der Markierungen können Sie beliebige Ausschnitte aus dem Text bearbeiten.

Wir haben bereits erwähnt, daß vi nur ein Texteditor ist; er verfügt nicht über solche Extras wie eine Rechtschreibprüfung, Hilfen bei der Kompilierung von Programmen und ähnliche Möglichkeiten. Allerdings kann vi andere Programme aufrufen, und mit Hilfe dieser Funktion sind Sie in der Lage, ihn zu erweitern. Der Befehl:

:x,y!befehl

ruft den angegebenen Befehl auf und führt ihn mit dem Text aus den Zeilen x bis y als Standardeingabe aus; diese Zeilen werden durch die Standardausgabe des Befehls ersetzt. Wie beim Befehl s (suchen und ersetzen) können Sie auch hier andere Bereiche wie etwa % (die ganze Datei) und $ (die letzte Zeile) statt der Zeilennummern angeben.

Ein Beispiel: Nehmen wir an, daß Sie alle Zeilen eines bestimmten Textbereichs als Zitat kennzeichnen möchten, indem Sie ein Größer-Zeichen (>) vor alle Zeilen schreiben.

Eine Möglichkeit dazu ist es, ein kleines Shell- oder Perl-Skript zu schreiben, das die Zeilen einliest und mit vorangestelltem > wieder ausgibt (siehe auch Kapitel 6, Programmierung unter Linux ). (Sie könnten aber auch einen sed -Befehl eingeben; hier gibt es einige Möglichkeiten.) Sie können dann von vi aus Textzeilen durch diesen Filter schicken, der die Zeilen innerhalb von vi durch den zitierten Text ersetzt. Wenn Sie das Skript z.B. quote genannt haben, geben Sie einfach folgenden Befehl ein:

:'a,.!quote

Damit wird der Textblock zwischen der Cursorposition und der Markierung a als Zitat gekennzeichnet.

Machen Sie sich mit den verschiedenen erweiterten Befehlen (Ex-Befehlen) vertraut. Mit :set können Sie einige Optionen einstellen; mit :set ai z.B. schalten Sie die automatische Einrückung von Text ein. (Mit :set noai schalten Sie diese Option wieder aus.)

Sie haben die Möglichkeit, Ex -Befehle (wie :set) beim Start von vi ausführen zu lassen, indem Sie diese Befehle in die Datei .exrc in Ihrem Home-Verzeichnis schreiben. (Mit der Environment-Variablen EXINIT läßt sich der Name dieser Datei ändern.) Sie könnten in Ihre .exrc -Datei z.B. einfügen:

set ai

um die automatische Einrückung einzuschalten. In dieser Datei können Sie den : vor Befehlen auch weglassen.

Es gibt eine ganze Reihe guter Lehrbücher und Nachschlagewerke zu vi -- sowohl online als auch gedruckt. Der Titel Learning the vi editor von Linda Lamb aus dem Verlag O'Reilly & Associates ist eine Fundgrube für weitere Informationen. Wenn Sie Zugang zum Internet haben, können Sie in den comp.editors.vi -Archiven der News-Gruppe comp.editors eine Reihe von Lern- und Referenzdokumenten finden; außerdem gibt es dort einige interessante Tips und Tricks zu vi . Der Heimatrechner dieses Archivs ist alf.uib.no:/pub/vi; er wird sowohl auf cs.uwp.edu als auch auf anderen Rechnern gespiegelt.


Inhaltsverzeichnis Vorherige Abschnitt Nächste Abschnitt