edv:os:unix:shell:tipps_und_tricks:vi
                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, nl | n-mal nach links, unten, oben, rechts | 
| Text | |
| w, W, b, B | 1 Wort vorwärts, rückwärts | 
| nw, nW, nb, nB | n-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] | |
| 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 | 
| `` | |
| 'x | Springt zur Zeile mit dem Marker x | 
| '' | 
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 | |
| dd | Aktuelle Zeile komplett löschen | 
| D | In der aktuellen Zeile bis zum EOL löschen | 
| p, P | |
| "np | |
| Yank | |
| 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 | |
| :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 newfile | Zeilen 30 bis 60 in ein anderes File speichern | 
| :30,60w» file | Zeilen 30 bis 60 am Ende eines anderen Files hinzufügen | 
| :w %.new | |
| :q | Editor verlassen | 
| :q! | Editor verlassen ohne zu speichern | 
| Q | |
| :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# | |
| % | |
| # | 
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 | 
Other ex Commands
| 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 | 
Externe Links zum Thema:
Ü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
edv/os/unix/shell/tipps_und_tricks/vi.txt · Zuletzt geändert: 2020/01/11 01:23 von 127.0.0.1