vi file Editiere file vi -r file Editiere die letzte gerettete Version von file nach Systemabsturz vi +n file Editiere file mit Cursorpositionierung auf Zeile n vi + file Editiere file mit Cursorpositionierung auf letzte Zeile vi file1 ... filen Editiere file1 bis filen vi +/str file Editiere file mit Cursorpositionierung auf Zeile, die str enthält
ZZ oder :wq aktuelles File sichern und vi verlassen :q! vi verlassen, ohne das aktuelle File zu sichern :w aktuelles File sichern :w file aktuelles File in file sichern :w! file Inhalt von file mit dem aktuellen File überschreiben :m,nw file Zeile m bis Zeile n des aktuellen Files in file sichern
a Text nach dem Cursor einfügen A Text am Ende der Zeile einfügen i Text vor dem Cursor einfügen I Text am Anfang der Zeile einfügen o unter dem Cursor Leerzeile für Texteingabe eröffnen O über dem Cursor Leerzeile für Texteingabe eröffnen :r file file lesen und nach der aktuellen Zeile einfügen :nr file file lesen und nach der n-ten Zeile einfügen
Der Wechsel vom vi-Eingabemodus zurück in den Kommandomodus erfolgt mit der Taste <ESC>.
<CTRL>-f eine Seite vorwärts rollen <CTRL>-b eine Seite rückwärts rollen <CTRL>-d eine halbe Seite vorwärts rollen <CTRL>-u eine halbe Seite rückwärts rollen z <RET> aktuelle Zeile wird oberste Zeile des Bildschirms z. aktuelle Zeile wird zur mittlere Zeile z- aktuelle Zeile wird zur untersten Zeile
h oder <-- Cursor nach links bewegen l oder --> Cursor nach rechts bewegen j Cursor nach unten bewegen k Cursor nach oben bewegen $ Cursor zum Ende der aktuellen Zeile bewegen 0 (Null) Cursor zum Anfang der aktuellen Zeile bewegen ^ Cursor zum ersten sichtbaren Zeichen der aktuellen Zeile bewegen tchar Cursor vor erstes Zeichen char bewegen ntchar Cursor vor n-tes Zeichen char bewegen w Cursor zum Anfang des nächsten Wortes bewegen W Cursor zum Anfang des nächsten Wortes bewegen (ohne Berücksichtigung von Sonderzeichen) b Cursor zum Anfang des vorhergehenden Wortes bewegen B Cursor zum Anfang des vorhergehenden Wortes bewegen (ohne Berücksichtigung von Sonderzeichen) e Cursor zum Ende des nächsten Wortes bewegen E Cursor zum Ende des nächsten Wortes bewegen (ohne Berücksichtigung von Sonderzeichen) H Cursor auf oberste Zeile des Bildschirms M Cursor auf mittlere Zeile des Bildschirms L Cursor auf unterste Zeile des Bildschirms 1G oder gg Cursor auf 1. Zeile im File bewegen nG Cursor auf n-te Zeile im File bewegen G Cursor auf letzte Zeile im File bewegen n+ Cursor n Zeilen vorwärts bewegen n- Cursor n Zeilen rückwärts bewegen ( Cursor zum Anfang des Satzes bewegen ) Cursor zum Anfang des nächsten Satzes bewegen { Cursor zum Anfang des Absatzes bewegen } Cursor zum Anfang des nächsten Absatzes bewegen % (auf {}[]()) Cursor auf zugehörende Klammer bewegen
Im vi-Kommandomodus:
x durch Cursor markiertes Zeichen löschen nx n Zeichen ab Cursor löschen dd aktuelle Zeile löschen ndd die nächsten n Zeilen löschen (einschl. der aktuellen) dw aktuelles Wort löschen (vom Cursor bis Wortende) dW aktuelles Wort einschl. Sonderzeichen löschen ndw n Wörter ab markiertem Wort löschen db vorhergehendes Wort löschen dB vorhergehendes Wort einschl. Sonderzeichen löschen ndb n Wörter vor dem Cursor löschen d$ oder D aktuelle Zeile vom Cursor bis Zeilenende löschen d0 (Null) aktuelle Zeile vom Cursor bis Zeilenanfang löschen dcursor_cmd Text vom Cursor bis zu der durch cursor_cmd bestimmten Stelle löschen :m,nd Zeilen m bis n löschen
Im vi-Eingabemodus:
<CTRL>-h oder Backspace vorhergehendes Zeichen löschen <CTRL>-w vorhergehendes Wort löschen <CTRL>-u alle eingebenen Zeichen der aktuellen Zeile komplett löschen
rchar aktuelles Zeichen durch char ersetzen Rtext aktuelle(s) Zeichen durch text ersetzen stext aktuelles Zeichen durch text ersetzen Stext oder cctext aktuelle Zeile durch text ersetzen cwtext aktuelles Wort durch text ersetzen ncwtext n Wörter ab Cursor durch text ersetzen Ctext aktuelle Zeile von Cursor bis Zeilenende durch text ersetzen ccursor_cmd text Text von Cursor bis cursor_cmd durch text ersetzen ~ aktueller Buchstabe wird in Groß- bzw. Kleinbuchstabe umgewandelt n~ n Buchstaben ab Cursor in Groß- bzw. Kleinbuchstaben umwandeln . letztes Kommando wiederholen
u zuletzt ausgeführten Befehl rückgängig machen U Zustand der aktuellen Zeile vor der Änderung herstellen :q! vi-Sitzung ohne Sicherung der Änderung verlassen
Y oder yy aktuelle Zeile zwischenspeichern nY oder nyy n Zeilen ab Cursor zwischenspeichern ycursor_cmd Text von Cursor bis cursor_cmd zwischenspeichern dd aktuelle Zeile löschen ndd n Zeilen ab Cursor löschen dcursor_cmd Text von Cursor bis cursor_cmd löschen p gelöschten oder zwischengespeicherten Text hinter (oder unter) dem Cursor einfügen P gelöschten oder zwischengespeicherten Text vor (oder über) dem Cursor einfügen xp zwei Zeichen vertauschen J zwei Zeilen zusammenfügen nJ n Zeilen zusammenfügen
:m,ns/str1/str2/ von Zeile m bis Zeile n wird str1 durch str2 ersetzt :m,ns/str1/str2/g von Zeile m bis Zeile n werden alle str1 durch str2 ersetzt & das letzte :s-Kommando wird wiederholt :g/str/cmd cmd wird für alle Zeilen ausgeführt, die str enthalten :v/str/cmd cmd wird für alle Zeilen ausgeführt, die str nicht enthalten
fchar vorwärts suchen von char in der aktuellen Zeile Fchar rückwärts suchen von char in der aktuellen Zeile /str<RET> vorwärts suchen von str ab der aktuellen Zeile ?str<RET> rückwärts suchen von str ab der aktuellen Zeile n nächstes Muster (vorwärts) suchen
:!cmd Kommando cmd wird der Shell zur Ausführung übergeben :r !cmd Kommando cmd wird ausgeführt und Ergebnis hinter der aktuellen Zeile eingefügt
Durch das Belegen von vi-Optionen (Kommando :set) mit einem Wert oder das Setzen von Optionen kann die Arbeitsweise des Editors beeinflusst werden. Die Kommandos set können in ein File mit dem Namen $HOME/.exrc eingetragen werden, das bei jedem vi-Editoraufruf abgearbeitet wird.
:set all Anzeige Belegung aller Optionen
Hier eine kleine Auswahl von Optionen:
:set number Zeilennummern anzeigen :set nonumber Zeilennummern nicht anzeigen :set ignorecase beim Suchen soll nicht zwischen Groß- und Kleinbuchstaben unterschieden werden :set noignorecase beim Suchen soll zwischen Groß- und Kleinbuchstaben unterschieden werden :set showmatch bei Eingabe einer schließenden Klammer wird die dazugehörige öffnende Klammer angezeigt :set noshowmatch keine Klammernprüfung :set autoindent automatische Einrückung :set noautoindent keine automatische Einrückung :set wrapmargin=n ab n Zeichen vor Zeilenende wird automatisch an einer Wortgrenze getrennt und eine neue Zeile begonnen