Formatierung einer Datei [DOS/UNIX/ ...] ( CR+LF/LF/ ...) *anzeigen :set ff ? *ändern :set ff=dos Codierung einer Datei (latin1 [=iso-8859-1]/iso-8859-n/UTF-8/...) *anzeigen :set encoding *ändern :set encoding=utf-8 Neu einlesen einer extern geänderten Datei :e! ====== Der UNIX-Editor vi ====== Für die Benutzung des Editors ist kein X-Windows nötig, denn **vi** läuft auf nahezu jedem Terminal. Daher ist es wichtig, den richtigen Terminaltyp beim login anzugeben. Loggt man sich beispielsweise über das Netz per ssh auf einen Zentralrechner ein, sollte man als Terminaltyp vt100 setzen mit **set term = vt100** . Als Default ist meist xterm gesetzt, anzuzeigen mit dem Kommando **echo $term** . Mit der Datei **.exrc** im Homedirectory des Benutzers kann eine eigene Tastaturbelegung für den **vi** geladen werden. Aufruf: #vi filename Damit wird die Datei in den Editorpuffer geladen und die ersten Zeilen werden, soweit vorhanden, auf dem Bildschirm ausgegeben, sonst wird die Datei neu angelegt: Der **vi** kennt zwei Modi, den **Kommandomodus** und den **Insertmodus**. Nach Aufruf befindet man sich im Kommandomodus. In den Insertmodus gelangt man durch Eingabe von <**i**>, zurück in den Kommandomodus mit <**ESC**>. Die wichtigsten Kommandos: :wq Datei sichern und Editor verlassen ZZ Datei sichern und Editor verlassen (alternativ) :q! Editor verlassen ohne Abspeichern :w file Datei nach file schreiben :w! file Datei nach file schreiben, falls vorhanden überschreiben :z1,z2 w file Zeilen z1 bis z2 nach file schreiben :r file file in Editorpuffer einlesen und an aktueller Cursorposition einfügen :n next, die nächste Datei aus der Aufrufliste wird in den Editorpuffer geladen i text insert, Text vor Cursorposition einfügen I text Text am Zeilenanfanf einfügen a text append, Text hinter Cursorposition einfügen A text Text am Zeilenende einfügen o text open, neue Zeile hinter aktueller Zeile einfügen O text neue Zeile vor aktueller Zeile einfügen R text replace, nachfolgenden Text überschreiben C text change, nachfolgenden Text bis Zeilenende ersetzen ctrl v im Insertmodus einfügen von Steuerzeichen \ Wirkung des nachfolgenden Sonderzeichens wird aufgehoben r c replace, ersetze aktuelles Zeichen durch c x lösche aktuelles Zeichen cw change word, der Rest des aktuellen Wortes wird überschrieben D lösche Rest der Zeile dd lösche aktuelle Zeile dw lösche aktuelles Wort z1,z2 d lösche den Bereich Zeile z1 bis z2 ctrl g liefert aktuelle Zeilennummer und Länge der Datei u undo, mache letzten Befehl rückgängig [n]Y yank, es werden n Zeilen ab der aktuellen in den Puffer geschrieben. Wird n nicht angegeben, wird die akt. Zeile gepuffert. yw Wort wird ab Cursorposition gepuffert p paste, schreibt den Pufferinhalt hinter die aktuelle Cursorposition J join, die aktuelle und die nachfolgende Zeile werden zu einer verknüpft :s/alt/neu substitute,in aktueller Zeile erstes alt durch neu ersetzen :s/alt/neu/g in aktueller Zeile alle alt durch neu ersetzen :%s/alt/neu/g in der ganzen Datei alt durch neu ersetzen :%s/alt/neu/c in der ganzen Datei alt durch neu nach Rückfrage ersetzen,bei Eingabe von y wird ersetzt, sonst nicht /suchstring sucht ab aktueller Cursorposition nach suchstring ?suchstring sucht analog rückwärts n next, wiederhole das letzte Suchkommando ===== Cursorpositionierung ===== Die Cursortasten sollten funktionieren, ansonsten müssen entsprechende Änderungen in der Datei **.exrc** vorgenommen werden. ctrl F eine Seite vorwärts blättern ctrl B eine Seite rückwärts blättern ^ Anfang der aktuellen Zeile $ Ende der aktuellen Zeile :(n) Anfang von Zeile n ctrl N nächste Zeile, gleiche Spalte :!kommando Ausführen eines Shell-Kommandos innerhalb des vi's ===== Set-Optionen ===== :set all listet sämtliche momentanen Einstellungen :set nu automatische Zeilennumerierung einstellen :set nonu Zeilennumerierung ausstellen ===== Hinweis ===== Falls ausversehen **Control-S** gedrückt wird (z.B. weil versucht wurde die Datei über die Emacs Tastenkombination **C-x C-s** zu Speichern...), dann wird dieses vom Terminal als Stop interpretiert. Es werden dann solange keine Tastendrücke verarbeitet, bis durch Drücken von **Control-Q** dieser Stop wieder aufgehoben wird. Alle in der Zwischenzeit eingegebenen Tastendrücke werden dann ausgewertet. ===== Vorteile von vi ===== * kurze Ladezeit * praktisch auf jedem Unix-System verfügbar * benötigt kein X-Windows