Inhaltsverzeichnis

vi - Der Editor

vi ist der standard-Editor unter Unix und Derivaten.

vi startet standardmäßig im TextModus:

vi FileName

Mit dem Parameter -b startet man ihn im "Binary Mode":

vi -b FileName

Die Darstellung im vi mittels xxd (Hex Dump Tools) als Filter auf die HEX-Ansicht umschalten:

:%!xxd

Einfacher geht es jedoch mit hexdump:

hexdump -C FileName | less

Quick Reference:

:!: In Arbeit - der Inhalt wird übersetzt (en → de).

Movement Commands (Cursor und/oder Text verschieben)

Zeichen
h, j, k, l 1x nach links, unten, oben, rechts
nh, nj, nk, nln-mal nach links, unten, oben, rechts
Text
w, W, b, B 1 Wort vorwärts, rückwärts
nw, nW, nb, nBn-mal Wort vorwärts, rückwärts
e, E Ende des Wortes
), ( Anfang des nächsten, vorherigen Satzes
}, { Anfang des nächsten, vorherigen Paragraphs
]], [[ Anfang der nächsten, vorherigen Section
Zeilen
0, $ Erste, letzte Position in der aktuellen Zeile
^ Erstes Zeichen der aktuellen Zeile (Leerstellen ignoriert)
+, - Erstes Zeichen der nächsten, vorherigen Zeile
n| Position (Spalte) n in der aktuellen Zeile
H Obere Bildschirmzeile
M Mittlere Zeile des Bildschirms
L Untere Bildschirmzeile
nH n (Anzahl) Zeilen von oben
nL n (Anzahl) Zeilen von unten
Ganzer Bildschirm/Seite
[CTRL-F], [CTRL-B] Eine Seite vorwärts, rückwärts
[CTRL-D] [CTRL-U] Eine halbe Seite nach unten/oben skrollen
[CTRL-E] [CTRL-Y] Den Text um eine Zeile nach oben/unten scroll'en
z [RETURN] Text nach oben scroll'en, daß die aktuelle Zeile ganz oben steht
z. Text so scroll'en, daß die aktuelle Zeile in der Mitte steht
z- Text nach unten scroll'en, daß die aktuelle Zeile ganz unten steht
[CTRL-L] [CTRL-R] Bildschirminhalt erneut zeichnen (Refresh, ohne zu skrollen)
Suche
/pattern Nach dem Muster pattern suchen - vorwärts
?pattern Nach dem Muster pattern suchen - rückwärts
n, N Letzte Suche mit / oder ? fortsetzen:
n - in gleicher Richtung, N - in Gegenrichtung
fx Zeichen x in der selben Zeile vorwärts suchen
Fx Zeichen x in der selben Zeile rückwärts suchen
tx Zeichen vor x in der selben Zeile vorwärts suchen
Tx Zeichen nach x in der selben Zeile rückwärts suchen
; Letzte Suche in der selben Zeile wiederholen
' Letzte Suche in der selben Zeile in Gegenrichtung wiederholen
Zeilennummer
[CTRL-G] :?: Aktuelle Zeilennummer zeigen
nG Zu der Zeile n springen
G Zu der letzten Zeile im File springen
:n Zu der Zeile n springen
Marking position
mx Markierung x setzen (erlaubt sind die Buchstaben a-z und A-Z)
`x Cursor zur Markierung x
`` :?: Zurück zum vorherigen Marker oder Kontext
'x Springt zur Zeile mit dem Marker x
'' :?: Zurück zur Zeile mit dem bisherigen Marker

Editing Commands (Text bearbeiten)

Insert
i, a Text vor/nach dem Cursor einfügen/anhängen
I, A Text am Anfang/Ende der akuellen Zeile einfügen
o, O Eine leere Zeile unter/über dem Cursor hinzufügen
Change
r Ein einziges Zeichen ersetzen
cw Ein Wort ersetzen
cc Ersetzt aktuelle Zeile durch den neuen Text
C Ersetzt Text ab der aktuellen Position bis zum Ende der Zeile durch den neuen Text
R Im Überschreiben-Modus schreiben
s Löscht das aktuelle Zeichen und wechselt in den Eingabe (insert) Modus
S Löscht die aktuelle Zeile und wechselt in den Eingabe (insert) Modus
Delete, move
x Ein Zeichen (am Cursor) löschen (so, wie es normalerweise die [Delete]-Taste tut)
X Löscht ein Zeichen vor dem Cursor (so, wie es die [Backspace]-Taste tut)
dw :?: Löscht ein Wort
dd Aktuelle Zeile komplett löschen
D In der aktuellen Zeile bis zum EOL löschen
p, P :?: Fügt den gelöschten Text ein, nach oder vor dem Cursor
"np :?: Fügt den Text ein aus dem "delete-Buffer" Nummer n nach dem Cursor (nur letzte 9 Löschungen)
Yank FIXME
yw Yank (copy) word
yy Yank current line
"ayy Yank current line into named buffer a
p, P Put yanked text after, before cursor
"aP Put text from buffer a before cursor
Other commands
. Letztes edit-Kommando wiederholen
u, U Letztes edit-Kommando rückgängig machen; Aktuelle Zeile wiederherstellen
J Aktuelle Zeile mit der nächsten Zeile vereinen
ex edit commands FIXME
:d Zeilen löschen
:m Zeilen verschieben
:co or :t Zeilen kopieren
:.,$d Löschen ab der aktuellen Zeile bis zum Ende des Files
:30,60m0 Verschieben von Zeilen 30 bis 60 zum Anfang des Files
:.,/pattern/co$ Copy from current line through line containing pattern to end of file

Exit Commands (Editor verlassen)

ZZ File speichern und Editor verlassen
:x -- // --
:wq -- // --
:w File speichern
:w! File speichern (Schreibschutz ignorieren)
:30,60w newfileZeilen 30 bis 60 in ein anderes File speichern
:30,60w» file Zeilen 30 bis 60 am Ende eines anderen Files hinzufügen
:w %.new FIXME Write current buffer named file as file.new
:q Editor verlassen
:q! Editor verlassen ohne zu speichern
Q FIXME Quit vi and invoke ex
:e file2 Ein weiteres File file2 editieren ohne aktuelles File zu verlassen
:n Zum nächsten File wechseln (beim Editieren von mehreren Files gleichzeitig)
:e! Zurück zur Version des aktuellen Files am Zeitpunkt des letzten Speicherns
:e# FIXME Edit alternate file
% FIXME Current filename
# FIXME Alternate filename

Command Line Options (vi Parameter)

vi [dir] file Das File namens "file" mit vi editieren (oder neu erstellen) im Verzeichnis dir
(wenn die Datei im aktuellen Verzeichnis erstellt werden soll, lässt man Verzeichnis weg)
vi file1 file2 Files "file1" und "file2" mit vi parallel editieren
view file Das File "file" im read-only Modus öffnen
vi -R file -- // --
vi -r file Recovery-Aktion nach Programm- oder Systemabsturz
vi + file File öffnen und zu der letzten Zeile "springen"
vi +n file File öffnen und zu der Zeile Nummer n "springen"
vi +/pattern file Öffnet eine Datei namens file an der Zeile in der das Suchmuster pattern das erste mal auftritt
ex file FIXME Invoke ex editor on file from UNIX

Other ex Commands

FIXME

Abbreviations 1)
:map x sequence Define keystroke x as a command sequence
:map! x sequence Define x as command sequence for insert mode
:unmap x Disable the map x
:unmap! x Disable insert mode map x
:ababbr phrase Abbreviate phrase as abbr; when abbr is typed in insert mode, it expands to full words or phrases
:unab abbr Disable abbreviation
Customizing environment: 2)
:set option Activate option
:set option=value Assign value to option
:set nooption Deactivate option
:set Display options set by user
:set all Display list of all current options, both default and those set by the user
:set option? Display value of option
: Invoke ex from vi editor
:vi Invoke vi editor from ex
:sh Invoke shell
^D Return to editor from shell
:! command Give UNIX command
:r newfile Read contents of newfile into current file
:r !command Read output of UNIX command into current file

Über vi in Wikipedia lesen.
Kurzanleitung zum vi im PDF-Format.
Noch eine gute Anleitung: http://de.wikibooks.org/wiki/Vi-Befehlsreferenz:_Bearbeitung


Stand: 16.05.2013 - in Arbeit

EOF

1) , 2)
In .exrc files, omit colon at the start of ex commands.