====== 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