Zum Inhalt

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:

  • Einfügen, löschen, Text ä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 Kommandos-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-Highlighting, 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 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) oder x (eXit) zum Speichern und Beenden.

Klicken Sie im Befehlsmodus zweimal in Folge auf die Z Taste (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 ESC Taste.

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:

, n, h oder nh

  • Verschiebe ein oder n Zeichen nach rechts:

, n, l oder nl

  • Ein oder n Zeichen nach oben:

, n, k oder nk

  • Ein oder n Zeichen nach unten verschieben:

, n, j oder nj

  • Zum Ende der Zeile verschieben:

$ oder ENDE

  • 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, w bewegt sich zum nächsten Wort, b bewegt sich 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 nw

  • Verschiebe ein oder n Wörter nach links:

b oder nb

Von jedem Ort auf einer Zeile

  • Zur letzten Textzeile verschieben:

G

  • In Zeile n verschieben:

nG

  • Zur ersten Zeile des Bildschirms verschieben:

H

  • In die mittlere Zeile des Bildschirms verschieben:

M

  • Zur letzten Zeile des Bildschirms verschieben:

L

Text einfügen

Im Befehlsmodus gibt es mehrere Möglichkeiten, Text einzufügen.

VI schaltet nach Eingabe eines dieser Schlüssel 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)

  • Text nach einem Zeichen einfügen:

a (append)

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 nach einer Zeile einfügen:

o

Zeichen, Wörter und Zeilen

VI erlaubt Textbearbeitung durch Verwaltung von Folgendes:

  • Zeichen,
  • Worte,
  • Zeilen.

In jedem Fall ist Folgendes möglich:

  • löschen,
  • ersetzen,
  • kopieren,
  • ausschneiden,
  • einfügen.

Diese Operationen werden im Befehl-Modus durchgeführt.

Zeichen

  • Ein oder n Zeichen löschen:

x oder nx

  • Ersetze ein Zeichen durch ein anderes:

rZeichen

  • Ersetze mehr als ein Zeichen durch andere:

RZeichenESC

Anmerkung

Der R Befehl wechselt in den eRsetzen-Modus, was eine Art einfügen Modus ist.

Wörter

  • Ein oder n Wörter löschen (cut):

dw oder ndw

  • Ein oder n Wörter kopieren:

yw oder nyw

  • Ein Wort einmal oder n mal nach dem Cursor einfügen:

p oder np

  • Ein Wort einmal oder n mal vor dem Cursor einfügen:

P oder nP

  • Ein Wort ersetzen:

cwwordESC

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:

dd oder ndd

  • Eine oder n Zeilen kopieren:

yy oder nyy

  • Das, was einmal oder n nach der aktuellen Zeile kopiert oder gelöscht wurde, einfügen:

p oder np

  • das einfügen, was einmal oder n mal vor der aktuellen Zeile kopiert oder gelöscht wurde:

P oder nP

  • Löschen (cut) vom Anfang der Zeile zum Cursor:

d0

  • Löschen (cut) vom Cursor bis zum Ende der Zeile:

d$

  • Vom Anfang der Zeile zum Cursor kopieren:

y0

  • Kopieren Sie vom Cursor an das Ende der Zeile:

y$

  • Text aus der aktuellen Zeile löschen (cut):

dL oder dG

  • Den Text aus der aktuellen Zeile kopieren:

yL oder yG

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

Strg+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 Ex-Befehle werden unten auf der Seite angezeigt und müssen mit der ENTER Taste bestätigt werden.

Um zum Ex-Modus zu wechseln, geben Sie im Befehl-Modus das Zeichen : ein.

Nummerierung der Zeilen

  • Nummerierung der Zeilen ein-/ausblenden:

:set nu oder :set number

:set nonu oder :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 gefundenem Vorkommnis:

n

  • Gehe zum vorherigen Vorkommnis gefunden:

N

Es gibt Platzhalter, um die Suche in VI zu erleichtern.

  • [] : Sucht nach einem Zeichenbereich oder einem einzelnen Zeichen, dessen mögliche Werte angegeben sind.

Beispiel:

/[Ww]ord : Suche Wort oder wort

/[1-9]word : search 1word, 2wordxWort wobei x eine Zahl ist

  • ^ : Suche nach einem String, der die Zeile beginnt.

Beispiel:

/^Word

  • $ : Suche nach einem String, der die Zeile beendet.

Beispiel:

/Word$

  • . : Suche nach einem einzelnen Zeichen außer Zeilenvorschub.

Beispiel:

/W.rd : Suche Wort, 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 am absoluten 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

Das g steht hier für global.

Datei Operationen

  • Datei speichern:

:w

  • Unter einem anderen Namen speichern:

:w Datei

  • Von Zeile n bis Zeile m in eine andere Datei speichern:

:n,m w Datei

  • Die letzte Speicherung der Datei neu laden:

e!

  • Den Inhalt einer anderen Datei nach dem Cursor einfügen:

:r Datei

  • Bearbeiten einer Datei beenden, ohne zu speichern:

:q

  • Beenden Sie die Bearbeitung einer Datei, die während der Sitzung geändert wurde, aber nicht gespeichert wurde:

:q!

  • Datei beenden und speichern:

:wq oder :x

Andere Funktionen

Es ist möglich, VI auszuführen, wobei die Optionen angegeben werden, die für die Sitzung geladen werden sollen. 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. Bei jedem VI- oder VIM-Start werden die Befehle gelesen und angewendet.

vimtutor Befehl

Es gibt ein Tutorial zum Lernen wie man VI benutzt. Es ist mit dem Befehl vimtutor zugänglich.

$ vimtutor