====== 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 |
|**n**h, **n**j, **n**k, **n**l|**n**-mal nach links, unten, oben, rechts|
^Text ^ ^
|w, W, b, B |1 Wort vorwärts, rückwärts |
|**n**w, **n**W, **n**b, **n**B|**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] |:?: Aktuelle Zeilennummer zeigen |
|**n**G |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 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 |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 ((In .exrc files, omit colon at the start of ex commands.)) ^ ^
|: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: ((In .exrc files, omit colon at the start of ex commands.)) ^ ^
|: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 [[http://de.wikipedia.org/wiki/Vi|Wikipedia]] lesen.\\
[[http://www.fehcom.de/pub/viref.pdf|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