Der Standard Editor vi

Aus xinux.net
Zur Navigation springen Zur Suche springen

Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat enthalten. Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es sich um einen rein textorientierten Editor, der mittels eigener Kommandos gesteuert wird.

Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen. Und unter Ubuntu/Debian mit "apt-get install vim" zu installieren.

Starten des Editors:

Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem Dateinamen der zu editierenden Datei als Parameter. Beispiel:

vi sux.txt

Die Betriebsmodi des vi:

Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat, sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der vi über drei Betriebsmodi:

Kommandomodus:

Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen (Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem sich der vi direkt nach seinem Start befindet.

Zeilenmodus oder Exmodus:

Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen, nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben in der Statuszeile angezeigt.

Eingabemodus:

Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in den Eingabemodus. Man kann durch folgende Aktionen wechslen

i Text vor der aktuellen Cursorposition einfügen
I Text am Zeilenanfang einfügen
a Text hinter der aktuellen Cursorposition einfügen
A Text am Zeilenende einfügen
o Unterhalb der aktuellen Zeile eine neue Zeile einfügen
O Oberhalb der aktuellen Zeile eine neue Zeile einfügen

Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.

Im Kommandomodus können Sie durch den Text navigieren und auch den Text selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos nötig, von denen die wichtigsten im Folgenden erläutert werden:

xinux@zero:/$ vi iwas.txt

Vim.jpg

Benutzen des Kommandomodus

Steuerung des Cursors durch den Text

Mittels folgender Kommandos bewegt sich der Cursor durch den Text:

h Cursor ein Zeichen nach links
l Cursor ein Zeichen nach rechts
k Cursor eine Zeile nach oben
j Cursor eine Zeile nach unten
w Cursor ein Wort nach rechts
b Cursor ein Wort nach links

Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.

Angaben zur Positionierung

STRG+U 1⁄2 Bildschirmseite nach oben
STRG+D 1⁄2 Bildschirmseite nach unten
STRG+B 1 Bildschirmseite nach oben
STRG+F 1 Bildschirmseite nach unten
/Ausdruck Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N
?Ausdruck Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N
0 Zeilenanfang
$ Zeilenende
w Nächstes Wort
b Vorheriges Wort
fc Auf das Zeichen c springen. c steht für ein beliebiges Zeichen
G Letzte Zeile der Datei
nG n-te Zeile der Datei
H Anfang der Bildschirmseite
L Ende der Bildschirmseite

Befehle zur Textbearbeitung -> Was soll geschehen

x Löscht Zeichen
dd Zeile löschen und in den Puffer laden
c Ändern
y In den Puffer laden

Weitere wichtige Befehle:

p Aus dem Puffer einfügen
u Undo, macht den letzten Befehl rückgängig
STRG+r Redo, macht den letzten Undo rückgängig

Zeilen- oder Exmodus

Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet. Es folgen einige Beispiele.

Befehle zum Speichern und Beenden:

:w          Schreibt Datei
:w Datei2   Schreibt eine Kopie in Datei2
:w !        Schreibt Datei (übergehe Schreibschutz)
:w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz)
:q          Schließe Datei
:q!         Schließe Datei (verwerfe Änderungen)
:wq         Schreibe Datei und beende Editor
:wq!        Schreibe Datei und beende Editor (übergehe Schreibschutz)
:q!         Schließe Datei (verwerfe Änderungen)
:h          Hilfe anzeigen, durch drücken von :q Beenden der Hilfe
:e Datei3   Editiere Datei3
:e #        Editere vorhergehende Datei
:1,3co9     Kopiere von der ersten bis zu dritten Zeile 
            und füge den Inhalt unterhalb der neunte Zeile ein.

Interaktionen mit Unix:

:r Datei4   Fügt Inhalt der Datei4 nach dem Cursor ein
:r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein
:! Befehl   Führt den Befehl aus
:sh         Starte Subshell -> mit exit kehrt man wieder zurück
            Eingabemodus zurück

Ersetzen von Textteilen

Die grundsätzliche Syntax lautet:

:[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]
:s/worf/kirn/              der erste worf wird in der aktuellen Zeile durch kirn ersetzt
:1,9s/worf/kirn/g          von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt
:1,$s/worf/kirn/           von der ersten bis zur letzten Zeile ersetze ersten worf durch
                           kirn
:.,$s/worf/kirn/g          von der aktuellen bis zur letzten Zeile ersetze alle worf durch
                           kirn
:1,.s/worf/kirn/c          von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage
                           aber nach
:1,$s/^worf/kirn/          von der ersten bis zur letzten Zeile ersetze worf am
                           Zeilenanfang durch kirn
:4,$s/worf$/kirn/          von der 4. bis zur letzten Zeile ersetze worf am Zeilenende
                           durch kirn
:1,$s/^#//                 lösche alle Kommentarzeichen
:1,$s/^.orf/kirn/           ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat
                           gefolgt von einem orf durch kirn
:1,$s/^[A-Z]orf/kirn/g     suche nach einem Großbuchstaben am Anfang der Zeile
                           gefolgt von einem orf und ersetze durch kirn
:1,$s/^M[ae][iy]e*r/kirn/  suche alles, was am Anfang der Zeile ein großes M enthält,
                           gefolgt von einem a oder e , gefolgt von einem i oder y ,
                           gefolgt von einem e , welches 0 oder N mal vorkommen kann,
                           gefolgt von einem r und ersetze es durch kirn

Quiz