Werbung

In diesem Kapitel, werden wir verstehen, wie der vi-Editor unter Unix funktioniert. Es gibt viele Möglichkeiten, Dateien unter Unix zu bearbeiten. Das Bearbeiten von Dateien mit dem bildschirmorientierten Texteditor vi ist eine der besten Möglichkeiten. Dieser Editor ermöglicht es Ihnen, Zeilen im Kontext mit anderen Zeilen in der Datei zu bearbeiten.

Eine verbesserte Version des vi-Editors, die VIM genannt wird, ist inzwischen ebenfalls verfügbar. VIM steht dabei für Vi IMproved.

vi gilt allgemein als der De-facto-Standard unter den Unix-Editoren, weil –

  • er in der Regel auf allen Flavors von Unix-Systemen verfügbar ist.

  • seine Implementierungen sind durchweg sehr ähnlich.

  • Er benötigt nur sehr wenige Ressourcen.

  • Er ist benutzerfreundlicher als andere Editoren wie der ed oder der ex.

Sie können den vi-Editor verwenden, um eine bestehende Datei zu bearbeiten oder eine neue Datei von Grund auf zu erstellen. Sie können diesen Editor auch verwenden, um eine Textdatei einfach nur zu lesen.

Starten des vi-Editors

Die folgende Tabelle listet die grundlegenden Befehle zur Verwendung des vi-Editors auf –

Sr.Nr. Befehl &Beschreibung
1

vi Dateiname

Erzeugt eine neue Datei, wenn sie noch nicht existiert, ansonsten öffnet eine bestehende Datei.

2

vi -R Dateiname

Öffnet eine vorhandene Datei im Nur-Lese-Modus.

3

Ansicht Dateiname

Öffnet eine vorhandene Datei im Nur-Lese-Modus.

Nachfolgend ein Beispiel, um eine neue Datei testfile anzulegen, wenn sie im aktuellen Arbeitsverzeichnis noch nicht existiert –

$vi testfile

Der obige Befehl erzeugt die folgende Ausgabe –

|~~~~~~~~~~~~"testfile" 

Sie werden eine Tilde (~) in jeder Zeile nach dem Cursor sehen. Eine Tilde steht für eine unbenutzte Zeile. Wenn eine Zeile nicht mit einer Tilde beginnt und leer zu sein scheint, ist ein Leerzeichen, ein Tabulator, ein Zeilenumbruch oder ein anderes nicht sichtbares Zeichen vorhanden.

Sie haben jetzt eine offene Datei, mit der Sie arbeiten können.

Bedienungsmodi

Während der Arbeit mit dem vi-Editor stößt man normalerweise auf die folgenden zwei Modi –

  • Befehlsmodus – In diesem Modus können Sie administrative Aufgaben wie das Speichern von Dateien, das Ausführen von Befehlen, das Bewegen des Cursors, das Ausschneiden (Yanking) und Einfügen von Zeilen oder Wörtern sowie das Suchen und Ersetzen durchführen. In diesem Modus wird alles, was Sie eingeben, als Befehl interpretiert.

  • Einfügemodus – In diesem Modus können Sie Text in die Datei einfügen. Alles, was in diesem Modus getippt wird, wird als Eingabe interpretiert und in der Datei platziert.

vi startet immer im Befehlsmodus. Um Text einzugeben, müssen Sie sich im Einfügemodus befinden, für den Sie einfach i eingeben. Um aus dem Einfügemodus herauszukommen, drücken Sie die Esc-Taste, die Sie zurück in den Befehlsmodus bringt.

Tipp – Wenn Sie sich nicht sicher sind, in welchem Modus Sie sich befinden, drücken Sie zweimal die Esc-Taste; das bringt Sie in den Befehlsmodus. Sie öffnen eine Datei mit dem vi-Editor. Geben Sie zunächst einige Zeichen ein und kommen Sie dann in den Befehlsmodus, um den Unterschied zu verstehen.

Ausstieg aus vi

Der Befehl zum Ausstieg aus vi lautet :q. Sobald Sie im Befehlsmodus sind, geben Sie einen Doppelpunkt und ‚q‘ ein, gefolgt von Return. Wenn Ihre Datei in irgendeiner Weise verändert wurde, wird der Editor Sie darauf hinweisen und Sie nicht beenden lassen. Um diese Meldung zu ignorieren, lautet der Befehl zum Verlassen von vi ohne zu speichern :q! Damit können Sie vi verlassen, ohne die Änderungen zu speichern.

Der Befehl zum Speichern des Inhalts des Editors lautet :w. Sie können den obigen Befehl mit dem quit-Befehl kombinieren oder :wq und return verwenden.

Der einfachste Weg, Ihre Änderungen zu speichern und vi zu verlassen, ist der Befehl ZZ. Wenn Sie sich im Befehlsmodus befinden, geben Sie ZZ ein. Der ZZ-Befehl funktioniert auf die gleiche Weise wie der :wq-Befehl.

Wenn Sie einen bestimmten Namen für die Datei angeben möchten, können Sie dies tun, indem Sie ihn nach dem :w angeben. Wenn Sie zum Beispiel die Datei, an der Sie gerade arbeiten, unter einem anderen Dateinamen namens Dateiname2 speichern möchten, würden Sie :w Dateiname2 eingeben und zurückgehen.

Bewegen innerhalb einer Datei

Um sich innerhalb einer Datei zu bewegen, ohne Ihren Text zu beeinflussen, müssen Sie sich im Befehlsmodus befinden (drücken Sie zweimal Esc). In der folgenden Tabelle finden Sie einige Befehle, mit denen Sie sich zeichenweise bewegen können –

Sr.Nr. Befehl &Beschreibung
1

k

Verschiebt den Cursor nach oben eine Zeile nach oben

2

j

Bewegt den Cursor eine Zeile nach unten

3

h

Bewegt Bewegt den Cursor um ein Zeichen nach links

4

l

Bewegt den Cursor um ein Zeichen nach rechts Position

Für das Bewegen innerhalb einer Datei müssen folgende Punkte beachtet werden –

  • vi ist case-sensitiv. Sie müssen bei den Befehlen auf Groß- und Kleinschreibung achten.

  • Den meisten Befehlen in vi kann man die Anzahl der gewünschten Aktionen voranstellen. Zum Beispiel bewegt 2j den Cursor zwei Zeilen nach unten.

Es gibt viele andere Möglichkeiten, sich in vi innerhalb einer Datei zu bewegen. Denken Sie daran, dass Sie sich im Befehlsmodus befinden müssen (zweimal Esc drücken). In der folgenden Tabelle sind einige Befehle aufgeführt, mit denen Sie sich in der Datei bewegen können.

Nachfolgend finden Sie eine Liste der Befehle, mit denen Sie sich in der Datei bewegen können.

7

Sr.Nr. Befehl & Beschreibung
1

0 oder ‖

Positioniert den Cursor an den Anfang einer Zeile

2

Positioniert den Cursor an das Ende einer Zeile

3

w

Positioniert den Cursor auf das nächste Wort

4

b

Positioniert den Cursor auf das vorherige Wort

5

(

Positioniert den Cursor an den Anfang des aktuellen Satzes

6

)

Positioniert den Cursor an den Anfang des nächsten Satzes

E

Setzt den Cursor an das Ende des von Leerzeichen begrenzten Wortes

8

{

Verschiebt einen Absatz zurück

9

}

Verschiebt einen Absatz vorwärts

10

]

Verschiebt einen Abschnitt vorwärts

12

n|

Verschiebt zur Spalte n in der aktuellen Zeile

13

1G

Bewegt sich zur ersten Zeile der Datei

14

G

Bewegt sich in die letzte Zeile der Datei

15

nG

Springt in die n-te Zeile der Datei

16

:n

Zieht in die n-te Zeile der Datei

17

fc

Zieht vorwärts nach c

18

Fc

Zieht zurück zu c

19

H

Bewegt sich an den oberen Rand des Bildschirms

20

nH

Bewegt sich zur n-ten Zeile vom oberen Rand des Bildschirms

21

M

Bewegt sich zur Mitte des Bildschirms

22

L

Bewegt sich zum den unteren Rand des Bildschirms

23

nL

Bewegt sich zur n-ten Zeile vom unteren Rand des Bildschirms

24

😡

Kolon gefolgt von einer Zahl würde den Cursor auf die Zeilennummer positionieren, die durch x repräsentiert wird

Steuerungsbefehle

Die folgenden Befehle können mit der Steuerungstaste verwendet werden, um die in der folgenden Tabelle angegebenen Funktionen auszuführen –

Nachfolgend ist die Liste der Steuerungsbefehle aufgeführt.

Str.Nr. Befehl & Beschreibung
1

CTRL+d

Bewegt sich 1/2 Bildschirm vorwärts

2

CTRL+f

Bewegt sich einen ganzen Bildschirm vorwärts

3

CTRL+u

Bewegt sich 1/2 Bildschirm rückwärts

4

CTRL+b

Bewegt sich einen Vollbildschirm zurück

5

CTRL+e

Bewegt den Bildschirm eine Zeile nach oben

6

CTRL+y

Verschiebt den Bildschirm eine Zeile nach unten

7

CTRL+u

Bewegt den Bildschirm um 1/2 Seite nach oben

8

CTRL+d

Verschiebt den Bildschirm um 1/2 Seite nach unten

9

CTRL+b

Bewegt den Bildschirm eine Seite nach oben

10

CTRL+f

Verschiebt den Bildschirm eine Seite nach unten

11

CTRL+I

Zeichnet den Bildschirm neu

Dateien bearbeiten

Um die Datei zu bearbeiten, müssen Sie sich im Einfügemodus befinden. Es gibt viele Möglichkeiten, aus dem Befehlsmodus in den Einfügemodus zu gelangen –

Sr.Nr. Befehl & Beschreibung
1

i

Einfügen von Text vor der aktuellen Cursorposition

2

I

Fügt Text am Anfang der aktuellen Zeile ein

3

a

Fügt Text nach der aktuellen Cursorposition ein

4

A

Fügt Text am Ende der aktuellen Zeile ein

5

o

Erzeugt eine neue Zeile zur Texteingabe unterhalb der Cursorposition

6

O

Erzeugt eine neue Zeile für die Texteingabe oberhalb der Cursorposition

Zeichen löschen

Hier ist eine Liste von wichtigen Befehlen, die zum Löschen von Zeichen und Zeilen in einer geöffneten Datei verwendet werden können –

Str.Nr. Befehl & Beschreibung
1

x

Löscht das Zeichen unter der Cursorposition

2

X

Löscht das Zeichen vor der Cursorposition

3

dw

Löscht von der aktuellen Cursorposition bis zum nächsten Wort

4

d^

Löscht von der aktuellen Cursorposition bis zum Zeilenanfang

5

d$

Löscht von der aktuellen Cursorposition bis zum Zeilenende

6

D

Löscht von der Cursorposition bis zum Ende der aktuellen Zeile

7

dd

Löscht die Zeile, auf der sich der Cursor befindet

Wie oben erwähnt, kann den meisten Befehlen in vi die Anzahl der Male vorangestellt werden, die die Aktion ausgeführt werden soll. Zum Beispiel löscht 2x zwei Zeichen unter der Cursorposition und 2dd löscht zwei Zeilen, auf denen sich der Cursor befindet.

Es empfiehlt sich, die Befehle zu üben, bevor wir weitergehen.

Änderungsbefehle

Sie haben auch die Möglichkeit, Zeichen, Wörter oder Zeilen in vi zu ändern, ohne sie zu löschen. Hier sind die entsprechenden Befehle –

Str.Nr. Befehl &Beschreibung
1

cc

Entfernt den Inhalt der Zeile und lässt Sie im Einfügemodus.

2

cw

Wechselt das Wort, auf dem sich der Cursor befindet, vom Cursor zum klein geschriebenen w am Wortende.

3

r

Ersetzt das Zeichen unter dem Cursor. vi kehrt nach der Ersetzung in den Befehlsmodus zurück.

4

R

Überschreibt mehrere Zeichen beginnend mit dem Zeichen, das sich gerade unter dem Cursor befindet. Sie müssen Esc verwenden, um das Überschreiben zu stoppen.

5

s

Ersetzt das aktuelle Zeichen durch das Zeichen, das Sie eingeben. Danach befinden Sie sich im Einfügemodus.

6

S

Löscht die Zeile, in der sich der Cursor befindet, und ersetzt sie durch den neuen Text. Nachdem der neue Text eingegeben wurde, bleibt vi im Einfügemodus.

Kopier- und Einfügebefehle

Mit den folgenden Befehlen können Sie Zeilen oder Wörter von einer Stelle kopieren und dann an einer anderen Stelle einfügen –

Sr.Nr. Befehl & Beschreibung
1

yy

Kopiert die aktuelle Zeile.

2

yw

Kopiert das aktuelle Wort ab dem Zeichen, auf dem sich der Kleinbuchstaben-W-Cursor befindet, bis zum Ende des Wortes.

3

p

Setzt den kopierten Text hinter den Cursor.

4

P

Setzt den kopierten Text vor den Cursor.

Erweiterte Befehle

Es gibt einige erweiterte Befehle, die das tägliche Editieren vereinfachen und eine effizientere Nutzung von vi ermöglichen –

Nachfolgend eine Liste der erweiterten Befehle.

Str.Nr. Befehl & Beschreibung
1

J

Verbindet die aktuelle Zeile mit der nächsten. Eine Anzahl von j-Befehlen verbindet viele Zeilen.

2

<<

Schiebt die aktuelle Zeile um eine Verschiebebreite nach links.

3

>>

Verschiebt die aktuelle Zeile um eine Verschiebebreite nach rechts.

4

~

Schaltet die Großschreibung des Zeichens unter dem Cursor um.

5

^G

Drücken Sie die Tasten Strg und G gleichzeitig, um den aktuellen Dateinamen und den Status anzuzeigen.

6

U

Setzt die aktuelle Zeile in den Zustand zurück, in dem sie sich befand, bevor der Cursor in die Zeile eintrat.

7

u

Damit wird die letzte Änderung in der Datei rückgängig gemacht. Durch erneutes Tippen von ‚u‘ wird die Änderung wieder rückgängig gemacht.

8

J

Verbindet die aktuelle Zeile mit der nächsten. Eine Anzahl verbindet so viele Zeilen.

9

:f

Zeigt die aktuelle Position in der Datei in % und den Dateinamen, die Gesamtanzahl der Datei an.

10

:f Dateiname

Benennt die aktuelle Datei nach Dateiname um.

11

:w Dateiname

Schreibt in die Datei Dateiname.

12

:e Dateiname

Öffnet eine weitere Datei mit Dateiname.

13

:cd dirname

Wechselt das aktuelle Arbeitsverzeichnis zu dirname.

14

:e #

Wechselt zwischen zwei geöffneten Dateien.

15

:n

Wenn Sie mehrere Dateien mit vi öffnen, verwenden Sie :n, um zur nächsten Datei in der Reihe zu wechseln.

16

:p

Wenn Sie mehrere Dateien mit vi öffnen, verwenden Sie :p, um zur vorherigen Datei in der Reihe zu wechseln.

17

:N

Wenn Sie mehrere Dateien mit vi öffnen, verwenden Sie :N, um zur vorherigen Datei in der Reihe zu wechseln.

18

:r Datei

Liest Datei und fügt sie nach der aktuellen Zeile ein.

19

:nr Datei

Liest Datei und fügt sie nach der Zeile n ein.

Wort- und Zeichensuche

Der vi-Editor hat zwei Arten von Suchen: Zeichenketten- und Zeichensuche. Für eine Zeichenkettensuche werden die Befehle / und ? verwendet. Wenn Sie diese Befehle starten, wird der gerade eingegebene Befehl in der letzten Zeile des Bildschirms angezeigt, in der Sie die zu suchende Zeichenkette eingeben.

Diese beiden Befehle unterscheiden sich nur in der Richtung, in der die Suche stattfindet –

  • Der /-Befehl sucht vorwärts (abwärts) in der Datei.

  • Der Befehl ? sucht rückwärts (aufwärts) in der Datei.

Die Befehle n und N wiederholen den vorherigen Suchbefehl in der gleichen bzw. der entgegengesetzten Richtung. Einige Zeichen haben eine Sonderbedeutung. Diesen Zeichen muss ein umgekehrter Schrägstrich (\) vorangestellt werden, damit sie als Teil des Suchausdrucks berücksichtigt werden.

Str.Nr. Zeichen &Beschreibung
1

^

Sucht am Anfang der Zeile (Verwendung am Anfang eines Suchausdrucks).

2

Sucht nach einem einzelnen Zeichen.

3

*

Sucht nach null oder mehr des vorherigen Zeichens.

4

Zeilenende (Verwendung am Ende des Suchausdrucks).

5

[

Beginnt eine Reihe von passenden oder nicht passenden Ausdrücken.

6

<

Dieser wird in einen mit dem Backslash escapeten Ausdruck gesetzt, um das Ende oder den Anfang eines Wortes zu finden.

7

>

Dies hilft bei der obigen Beschreibung des Zeichens ‚<‚.

Die Zeichensuche sucht innerhalb einer Zeile nach einem nach dem Befehl eingegebenen Zeichen. Die Befehle f und F suchen nur in der aktuellen Zeile nach einem Zeichen. f sucht vorwärts und F sucht rückwärts und der Cursor springt an die Position des gefundenen Zeichens.

Die Befehle t und T suchen nur nach einem Zeichen in der aktuellen Zeile, aber bei t bewegt sich der Cursor an die Position vor dem Zeichen, und T sucht die Zeile rückwärts bis zur Position nach dem Zeichen.

Set-Befehle

Sie können das Aussehen Ihres vi-Bildschirms mit den folgenden :set-Befehlen ändern. Sobald Sie sich im Befehlsmodus befinden, geben Sie :set gefolgt von einem der folgenden Befehle ein.

Sr.No. Befehl & Beschreibung
1

:set ic

Ignoriert die Groß- und Kleinschreibung bei der Suche

2

:set ai

Setzt den Autoindent

3

:set noai

Setzt autoindent

4

:set nu

Zeilen mit Zeilennummern auf der linken Seite anzeigen

5

:set sw

Setzt die Breite eines Software-Tabstopps. Zum Beispiel würden Sie mit diesem Befehl eine Breite von 4 einstellen – :set sw = 4

6

:set ws

Wenn wrapscan gesetzt ist und das Wort nicht am Ende der Datei gefunden wird, wird versucht, es am Anfang zu suchen

7

:set wm

Wenn diese Option einen Wert größer als Null hat, wird der Editor automatisch einen „Wortumbruch“ durchführen. Um zum Beispiel den Umbruch auf zwei Zeichen zu setzen, würden Sie folgendes eingeben: :set wm = 2

8

:set ro

Ändert den Dateityp auf „nur lesen“

9

:set term

Der Terminaltyp wird gedruckt

10

:set bf

Verwirft Steuerzeichen aus der Eingabe

Befehle ausführen

Der vi hat die Möglichkeit, Befehle aus dem Editor heraus auszuführen. Um einen Befehl auszuführen, brauchen Sie nur in den Befehlsmodus zu gehen und :! command einzugeben.

Wenn Sie zum Beispiel prüfen wollen, ob eine Datei existiert, bevor Sie versuchen, Ihre Datei mit diesem Dateinamen zu speichern, können Sie :! ls eingeben und Sie sehen die Ausgabe von ls auf dem Bildschirm.

Sie können eine beliebige Taste (oder die Escape-Sequenz des Befehls) drücken, um zu Ihrer vi-Sitzung zurückzukehren.

Ersetzen von Text

Mit dem Ersetzungsbefehl (:s/) können Sie schnell Wörter oder Wortgruppen in Ihren Dateien ersetzen. Im Folgenden sehen Sie die Syntax zum Ersetzen von Text –

:s/search/replace/g

Das g steht für global. Das Ergebnis dieses Befehls ist, dass alle Vorkommen in der Zeile des Cursors geändert werden.

Wichtige Hinweise

Die folgenden Punkte werden zu Ihrem Erfolg mit vi beitragen –

  • Sie müssen sich im Befehlsmodus befinden, um die Befehle zu verwenden. (Drücken Sie jederzeit zweimal Esc, um sicherzustellen, dass Sie sich im Befehlsmodus befinden.)

  • Sie müssen mit den Befehlen vorsichtig umgehen. Diese unterscheiden Groß- und Kleinschreibung.

  • Sie müssen sich im Einfügemodus befinden, um Text einzugeben.

Werbung

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.