VI-Texteditor¶
In diesem Kapitel erfahren Sie, wie Sie mit dem VIsual-Editor arbeiten.
Ziele: In diesem Kapitel lernen zukünftige Linux-Administratoren Folgendes:
Verwendung der Haupt-Befehle des VI-Editors;
einen Text mit dem VI-Editor ändern.
Benutzerbefehle, Linux
Vorwissen:
Komplexität:
Lesezeit: 23 Minuten
VIsual (VI) ist trotz seiner begrenzten Ergonomie ein sehr beliebter Texteditor unter Linux. Es ist in der Tat ein Editor komplett im Textmodus: jede Aktion wird mit einer Taste auf der Tastatur oder dedizierten Befehlen durchgeführt.
Sehr leistungsstark, ist es vor allem sehr praktisch, da er auf einen Minimum für Basisanwendungen reduziert ist. Er ist daher im Falle eines Systemausfalls zugänglich. Die Universalität (er ist auf allen Linux-Distributionen und unter Unix vorhanden) macht ihn zu einem entscheidenden Werkzeug für den Administrator.
Seine Funktionen sind:
- Text einfügen, löschen und ändern;
- Kopieren von Wörter, Zeilen oder Textblöcke;
- Suchen und ersetzen von Zeichen.
vi
Befehl¶
Der vi
Befehl öffnet den VI Texteditor.
vi [-c command] [file]
Beispiel:
vi /home/rockstar/file
Option | Informationen |
---|---|
-c command | VI durch Angabe eines Befehls beim Öffnen ausführen |
Wenn die Datei an der angegebenen Stelle existiert, wird sie von VI gelesen, der im Kommando-Modus versetzt wird.
Wenn die Datei nicht existiert, öffnet VI eine leere Datei und eine leere Seite wird auf dem Bildschirm angezeigt. Wenn die Datei gespeichert wird, wird der mit dem Befehl angegebene Name verwendet.
Wenn der Befehl vi
ohne Angabe eines Dateinamens ausgeführt wird, öffnet VI eine leere Datei und eine leere Seite wird auf dem Bildschirm angezeigt. Wenn die Datei gespeichert wird, fragt VI nach einem Dateinamen.
Der vim
Editor übernimmt die Benutzeroberfläche und die Funktionen von VI, die mit vielen Verbesserungen ergänzt werden.
vim [-c command] [file]
Durch diese Verbesserungen verfügt der Benutzer über Syntax-Hervorhebung, was sehr nützlich ist, um Shell-Skripte oder Konfigurationsdateien zu bearbeiten.
Während einer Sitzung verwendet VI eine Pufferdatei, in der alle Änderungen des Benutzers aufgenommen werden.
Anmerkung
Solange der Benutzer seine Arbeit nicht gespeichert hat, wird die Originaldatei nicht verändert.
Beim Start ist VI im Kommandos-Modus.
Hinweis
Eine Textzeile wird durch Drücken von Enter beendet, aber wenn der Bildschirm nicht breit genug ist, erzeugt VI standardmäßig automatische Zeilenumbrüche, sofern wrap als Vorbelegung konfiguriert ist. Falls diese Zeilenumbrüche nicht erwünscht sind, sollte nowrap entsprechend konfiguriert werden.
Drücken Sie das Zeichen : aus dem Befehlsmodus um VI zu beenden und geben Sie dann Folgendes ein:
q
(beenden ohne zu speichern quit);w
um Ihre Arbeit zu speichern (write);wq
(write quit) oderx
(eXit) zum Speichern und Beenden.
Klicken Sie im Befehlsmodus zweimal in Folge auf die Taste Z (Großbuchstabe) zum Speichern und Beenden.
Um das Beenden ohne Bestätigung zu erzwingen, müssen Sie das Ausrufezeichen ! zu den vorherigen Befehlen hinzufügen.
Warnhinweis
Es gibt keine regelmäßige Sicherung, daher müssen Sie daran denken, Ihre Arbeit regelmäßig zu speichern.
Betriebsmodus¶
In VI gibt es 3 Arbeitsmodus:
- Der Befehl-Modus;
- Der Einfügemodus;
- Der ex-Modus.
Die Philosophie von VI besteht darin, zwischen dem Befehl-Modus und dem Einfüge-Modus zu wechseln.
Der dritte Modus, ex, ist ein Befehlsmodus für Fußzeilen eines Legacy-Texteditors.
Der Befehlsmodus¶
Dies ist der Standardmodus, wenn VI gestartet wird. Um es von allen anderen Modi aus aufzurufen, drücken Sie einfach die Taste Esc.
Zu diesem Zeitpunkt werden alle Tastaturkürzel als Befehle interpretiert und die entsprechenden Aktionen ausgeführt. Dies sind im Wesentlichen Befehle zum Bearbeiten von Text (kopieren, einfügen, rückgängig machen, ...).
Die Befehle werden nicht auf dem Bildschirm angezeigt.
Der Einfüge-Modus¶
Dies ist ein Textmodifikationsmodus. Um es aus dem Befehl Modus zu erreichen, müssen Sie spezielle Tasten drücken, die zusätzlich zur Änderung des Modus eine Aktion ausführen.
Der Text wird nicht direkt in die Datei gespeichert, sondern in eine Pufferzone im Speicher. Die Änderungen sind nur wirksam, wenn die Datei gespeichert wird.
Der Ex-Modus¶
Dies ist der Datei-Modifikationsmodus. Um darauf zuzugreifen, müssen Sie zuerst zum Befehls-Modus wechseln, geben Sie dann das ex-Kommando ein, das häufig mit dem Zeichen :
beginnt.
Der Befehl wird durch Drücken der Enter Taste bestätigt.
Cursor verschieben¶
Im Befehlsmodus gibt es mehrere Wege, den Cursor zu bewegen.
Die Maus ist nicht in einer Textumgebung aktiv, sondern in einer grafischen Umgebung Es ist möglich, sich Zeichen durch Zeichen zu bewegen, aber Shortcuts existieren um schneller zu arbeiten.
VI bleibt im Befehl-Modus nach dem Verschieben des Cursors.
Der Cursor befindet sich unter dem gewünschten Zeichen.
Von einem Zeichen¶
- Verschiebe ein oder
n
Zeichen nach links:
Left, n Left, h or n h
- Verschiebe ein oder
n
Zeichen nach rechts:
Right, n Right, l oder n l
- Ein oder
n
Zeichen nach oben:
Up, n Up, k oder n k
- Ein oder
n
Zeichen nach unten verschieben:
Down, n Down, j oder n j
- Zum Ende der Zeile verschieben:
$ oder End
- Zum Anfang der Zeile verschieben:
0 oder POS1
Vom ersten Zeichen eines Wortes¶
Wörter bestehen aus Buchstaben oder Zahlen. Satzzeichen und Apostrophe getrennt Wörter.
Wenn sich der Cursor in der Mitte eines Wortes befindet, mit w bewegt er sich zum nächsten Wort, mit b an den Anfang des Wortes.
Wenn die Zeile beendet ist, geht VI automatisch in die nächste Zeile.
- Verschiebe ein oder
n
Wörter nach rechts:
w oder n w
- Verschiebe ein oder
n
Wörter nach links:
b oder n b
Von jedem Ort auf einer Zeile¶
- Zur letzten Textzeile verschieben:
G
- In Zeile
n
verschieben:
n G
- Zur ersten Zeile des Bildschirms verschieben:
H
- In die mittlere Zeile des Bildschirms verschieben:
M
- Zur letzten Zeile des Bildschirms verschieben:
L
- Zur ersten Zeile der Datei springen
g g
Text einfügen¶
Es gibt mehrere Möglichkeiten, Text im Befehlsmodus einzufügen.
VI schaltet nach Eingabe eines dieser Tasten zum Einfüge-Modus.
Anmerkung
VI wechselt zum Einfüge-Modus. Sie müssen also die Esc Taste drücken, um in den Befehls-Modus zurückzukehren.
In Bezug auf ein Zeichen¶
- Text vor einem Zeichen einfügen:
i (insert – einfügen)
- Text hinter einem Zeichen einfügen:
a (append – anfügen)
In Verbindung mit einer Zeile¶
- Text am Anfang einer Zeile einfügen:
I
- Text am Ende einer Zeile einfügen:
A
In Bezug auf den Text¶
- Text vor einer Zeile einfügen:
O
- Text hinter einer Zeile einfügen:
o
Zeichen, Wörter und Zeilen¶
VI ermöglicht die Textbearbeitung durch die Verwaltung von:
- Zeichen,
- Worte,
- Zeilen.
In jedem Fall ist Folgendes möglich:
- löschen,
- ersetzen,
- kopieren,
- ausschneiden,
- einfügen.
Diese Operationen werden im Befehls-Modus durchgeführt.
Zeichen¶
- Ein oder
n
Zeichen löschen:
x oder n x
- Ein Zeichen durch ein anderes ersetzen:
r+character
- Mehr als ein Zeichen durch andere ersetzen:
R+characters+Esc
Anmerkung
Der R Befehl wechselt in den eRsetzen-Modus, was eine Art Einfüge-Modus ist.
Wörter¶
- Ein oder
n
Wörter löschen (cut):
d+w oder n+d+w
- Ein oder
n
Wörter kopieren:
y+w oder n+y+w
- Ein Wort einmal oder
n
mal nach dem Cursor einfügen:
p oder n+p
- Ein Wort einmal oder
n
mal vor dem Cursor einfügen:
P oder n+P
- Ein Wort ersetzen:
C+W+word+Esc
Hinweis
Es ist notwendig, den Cursor unter das erste Zeichen des Wortes zu platzieren (oder zu kopieren) ansonsten wird VI nur den Teil des Wortes zwischen dem Cursor und dem Ende ausschneiden (oder kopieren). Ein Wort zu löschen bedeutet, es auszuschneiden. Wird er danach nicht eingefügt, wird der Puffer geleert und das Wort gelöscht.
Zeilen¶
- Lösche (cut) eine oder
n
Zeilen:
d+d oder n+d+d
- Eine oder
n
Zeilen kopieren:
y+y oder n+y+y
- Das, was einmal oder
n
Mal nach der aktuellen Zeile kopiert oder gelöscht wurde, einfügen:
p oder n+p
- Das einfügen, was einmal oder
n
-mal vor der aktuellen Zeile kopiert oder gelöscht wurde:
P oder n+P
- Löschen (cut) vom Anfang der Zeile bis zum Cursor:
d+0
- Löschen (cut) vom Cursor bis zum Ende der Zeile:
d+$
- Vom Anfang der Zeile bis zum Cursor kopieren:
y+0
- Vom Cursor bìs zum Ende der Zeile kopieren:
y+$
- Den Inhalt von der Cursorzeile bis zur letzten Zeile der Datei löschen (cut):
d+G
- Den Inhalt von der Cursorzeile bis zur letzten Zeile des Bildschirms löschen (cut):
d+L
- Den Inhalt von der Cursor-Zeile bis zur letzten Zeile der Datei kopieren:
y+G
- Inhalt von der Cursorzeile bis zum Ende des Bildschirms kopieren
y+L
Eine Aktion abbrechen¶
- Die letzte Aktion rückgängig machen:
u
- Die Aktionen in der aktuellen Zeile rückgängig machen:
U
Stornierung abbrechen¶
- Eine Stornierung abbrechen
Ctrl+R
EX-Befehle¶
Der Ex-Modus erlaubt es Ihnen, auf die Datei zu agieren (Speichern, Layout, Optionen, ...). Es ist auch im Ex-Modus, in dem Such- und Ersetzungsbefehle eingegeben werden. Die Befehle werden unten auf der Seite angezeigt und müssen mit der Taste Enter bestätigt werden.
Um zum Ex-Modus zu wechseln, geben Sie im Befehls-Modus das Zeichen : ein.
Nummerierung der Zeilen¶
- Nummerierung der Zeilen ein-/ausblenden:
:set nonu
oder ausführlicher :set nonumber
:set nonu
oder ausführlicher :set nonumber
Nach einer Zeichenkette suchen¶
- Suche nach einem String ab dem Cursor:
/string
- Suche nach einem String vor dem Cursor:
?string
- Zum nächsten passenden String:
n
- Zum nächsten passenden String:
N
Es gibt reguläre Ausdrücke, um die Suche in VI zu erleichtern.
[]
: Sucht nach einem Zeichenbereich oder einem einzelnen Zeichen, dessen mögliche Werte angegeben sind.
Beispiel:
/[Ww]ort
: Suche Wort oder wort
/[1-9]word
: 1word, 2word … suchen x
word wobei x
eine Zahl ist
^
: Nach Zeilen suchen, die mit einer Zeichenkette beginnen.
Beispiel:
/^Word
$
: Suche nach Zeilen, die mit bestimmte Zeichen enden.
Beispiel:
/Word$
.
: Suche nach einem einzelnen Zeichen außer Zeilenvorschub.
Beispiel:
/W.rd
: Suche Word, Ward …
*
: Die Anzahl Male, mit der das vorherige Zeichen übereinstimmt, 0 Mal oder beliebig oft.
Beispiel:
/W*d
Hinweis: Wenn Sie die Groß-/Kleinschreibung (vorübergehend) beim Abgleich von Zeichenfolgen ignorieren möchten, geben Sie bitte das Kommando :set ic
ein.
Einen String ersetzen¶
Von der 1. bis zur letzten Zeile des Textes, den durchsuchten String durch die angegebene Zeichenkette ersetzen:
:1,$ s/search/replace
Hinweis: Sie können auch :0,$s/search/replace
verwenden, um anzugeben, dass ganz am Anfang der Datei begonnen werden soll.
Die gesuchte Zeichenfolge von der Zeile n
bis zur Zeile m
durch die neue Zeichenfolge ersetzen:
:n,m s/search/replace
Standardmäßig wird nur das erste Vorkommen jeder Zeile ersetzt. Um das Ersetzen jedes Vorkommnisses zu erzwingen, müssen Sie /g
am Ende des Befehls hinzufügen:
:n,m s/search/replace/g
Durchsuchen einer ganzen Datei, um den gesuchten String durch den angegebenen String zu ersetzen:
:% s/search/replace
Entfernt die angegebene Zeile¶
- Leerzeile löschen
:g/^$/d
- Löschen der Zeilen zwischen Zeilennummer n bis m
:n,md
- Löschen der Zeile, in der die Zeichenfolge erscheint
:g/string/d
- Eine Zeile löschen, die die Zeichenfolge Nicht enthält
:g!/string/d
- Alle Zeilen löschen, die mit dem Zeichen # beginnen
:g/^#/d
g bedeutet hier global.
Datei Operationen¶
- Datei speichern:
:w
- Unter einem anderen Namen speichern:
:w file
- Von Zeile
n
bis Zeilem
in eine andere Datei speichern:
:n,m w file
- Die letzte Speicherung der Datei neu laden:
e!
- Den Inhalt einer anderen Datei nach dem Cursor einfügen:
:r file
- Die Bearbeitung einer Datei beenden, ohne zu speichern:
:q
- Bearbeiten einer Datei beenden, die während der Sitzung geändert wurde, aber ohne zu speichern:
:q!
- Datei speichern:
:wq
oder :x
Andere Funktionen¶
Es ist möglich, VI mit Angabe der für die Sitzung zu ladenden Optionen auszuführen. Um dies zu tun, müssen Sie die -c
Option verwenden:
vi -c "set nu" /home/rockstar/file
Es ist auch möglich, die Ex-Befehle in einer Datei mit dem Namen .exrc
in das Login-Verzeichnis des Benutzers zu speichern. Die Befehle werden bei jedem VI- oder VIM-Start gelesen und angewendet.
vimtutor
Befehl¶
Es gibt ein Tutorial zum Erlernen der Verwendung von VI
. Es ist mit dem Befehl vimtutor
zugänglich.
vimtutor
Visualizations-Modus¶
Dieser Modus ist ein Unterpunkt des Befehlsmodus. Sie können es vervollständigen, indem Sie v oder V eingeben. Der Operationsinhalt des ersteren befindet sich auf Zeichenebene und der Operationsinhalt des letzteren auf Zeilenebene.
Information
Mit den Pfeiltasten können Sie den Zeichen- oder Zeileninhalt markieren, den Sie bearbeiten möchten.
Zeichenebene¶
- Löschen (Ausschneiden) - Drücken Sie die Taste v, um den Zeicheninhalt zu markieren, den Sie löschen möchten, und drücken Sie dann x, um ihn zu löschen
- Kopieren - Drücken Sie die Taste v, um den zu kopierenden Zeicheninhalt zu markieren, und drücken Sie dann die Taste y, um ihn zu kopieren
Linienebene¶
- Löschen (Ausschneiden) - Drücken Sie die Taste V, um die zu löschende Zeile zu markieren, und drücken Sie dann x, um sie zu löschen
- Kopieren - Drücken Sie die Taste V, um die zu kopierende Zeile zu markieren, und drücken Sie dann die Taste y, um sie zu kopieren