vi Befehlsreferenz

Quelle: Thomas Schoddel

Modi

  • Befehlsmodus [Esc]
  • Eingabemodus [i/a/o/…]
  • Kommandzeile [:]
  • nach dem Starten des vi befindet man sich im Befehlsmodus, man kann keinen Text eingeben! Alle hier eingegebenen Zeichen werden als Befehle interpretiert und vom vi direkt ausgeführt. Will man nun Text eingeben, muss man in den Eingabemodus wechslen.
  • Im Eingabemodus kann man direkt Text eingeben. Über die Esc-Taste gelangt man in den Befehlsmodus.
  • Mit der Kommandozeile kann man Dateien öffnen, speichern … und vi Verlassen. Für Kommandos wird im Befehlsmodus wird ein Doppelpunkt : vorangestellt.

Befehle

Befehlsmodus (n ist immer optional und eine Zahl)

Eingabe

BefehlBeschreibung
aHinter dem Cursor einfügen
AAm Ende der Zeile einfügen
iVor dem Cursor einfügen
IAm Zeilenanfang einfügen
oZeile unter aktueller Zeile einfügen
OZeile über aktueller Zeile einfügen

verändern & löschen

BefehlBeschreibung
uLetzte Änderung rückgängig machen
.Letzte Änderung wiederholen
nxEin oder n Zeichen ab dem Cursor löschen
nddAktuelle oder n Zeilen löschen
ndwAktuelles oder n Wörter löschen
pZuletzt gelöschten/kopierten Text hinter dem Cursor einfügen
PZuletzt gelöschten/kopierten Text vor dem Cursor einfügen
UAktuelle Zeile restaurieren
nJZeile mit nächster oder den nächsten n Zeilen zusammenfügen
~Gross- und Kleinschreibung vertauschen
:r DateinameEinlesen der Datei Dateiname unter die aktuelle Zeile
nXEin oder n Zeichen links vom Cursor löschen
DBis zum aktuellen Zeilenende löschen
ndWAktuelles oder n Wörter löschen (Leerzeichen als Trenner)
nd}Bis zum nächsten oder nten Absatz löschen
d^Bis zum aktuellen Zeilenanfang rückwärts löschen
d/MusterBis zum nächsten Vorkommen von Muster löschen
dnBis zum nächsten Vorkommen des letzten Musters löschen
dfxAlle Zeichen bis zum nächsten x auf der aktuellen Zeile (einschliesslich) löschen
dtxAlle Zeichen bis zum nächsten x auf der aktuellen Zeile (ausschliesslich) löschen
dLBis zum Bildschirmende löschen
dGBis zum Dateiende löschen
ncwAktuelles oder n Wörter ändern
ncWAktuelles oder n Wörter ändern (Leerzeichen als Trenner)
nccAktuelle oder n Zeilen ändern
nCText von der aktuellen Cursorposition bis zum aktuellen oder nten Zeilenende ändern
nsEin oder n Zeichen ändern, dann einfügen
RText ab der Cursorposition ändern

kopieren & verschieben

BefehlBeschreibung
nyyAktuelle oder n Zeilen in den Buffer kopieren
pZuletzt gelöschten/kopierten Text hinter dem Cursor einfügen

suchen

BefehlBeschreibung
nGSpringen des Cursors zum Dateiende oder zur n-ten Zeile
0Springen des Cursors zum Anfang der aktuellen Zeile
n$Springen des Cursors zum Ende der aktuellen oder n-ten Zeile
/musterVorwärts gerichtete Suche nach Muster
?musterRückwärts gerichtete Suche nach Muster
nGleichgerichtete Suche nach letztem Muster
:%s/Quelle/Ziel/ersetzt Quelle im Text einmal durch Ziel
:%s/Quelle/Ziel/gersetzt Quelle im Text überall durch Ziel

Schrittweise Erklärung des Befehls (Beispiel)

BefehlBeschreibung
:5,$s/\~/Hallo/gersetzt von der fünften bis zur letzten Zeile “~” durch das Wort “Hallo”.
BefehlBeschreibung
: in die Kommandozeile wechseln
5,$ Der Befehl hat Auswirkung von Zeile 5 bis zur letzten Zeile. Ohne diese Angabe wirkt sich der Befehl nur in der aktuellen Zeile aus.
s ersetzen (substitute)
/\~/Hallo/ /alter Ausdruck/neuer Ausdruck/ ACHTUNG: \~ bei Sonderzeichen wie z.B. “~” einen Backslash voranstellen
g Auswirkung auf alle Vorkommen in der Zeile (global).

Weglassen oder “1? bedeutet Auswirkung nur auf erstes Vorkommen. “2? bedeutet zweites Vorkommen usw.

Kommandos – Kommandozeile

Beenden (Speichern)

BefehlBeschreibung
:qvi verlassen, falls Datei abgespeichert wurde
:q!Datei trotz Änderungen ungesichert verlassen
:wDatei sichern
:xvi beenden, Datei nur sichern, wenn Änderungen vorgenommen wurden
ZZvi beenden, Datei nur sichern, wenn Änderungen vorgenommen wurden
:wq(write quit) Sichern und vi beenden
:w DateinameDatei in Datei Dateiname sichern
:w!Datei sichern trotz Schreibschutz
:n Nächste Datei bearbeiten

Einfügen (Öffnen)

BefehlBeschreibung
:r DateinameDatei Dateiname hinter aktuelle Zeile kopieren
:e DateinameDatei Dateiname laden, wenn die Datei nicht existiert wird eine erzeugt

Änderungen verwerfen

BefehlBeschreibung
:e!alle Änderungen seit letztem Sichern wegwerfen
:q!vi ohne Sichern verlassen

Starten mit Optionen: vi -option Dateiname

BefehlBeschreibung
-istartet vi gleich im Eingabemodus
-RDatei read-only öffnen
+zeilennummerspringt direkt zur angegebenen Zeile
+/musterSpringt an die Stelle an der das erste mal muster auftaucht
unix/vi_befehlsreferenz.txt · Zuletzt geändert: 27.12.2013 19:46 (Externe Bearbeitung)
Nach oben
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0