Benutzer-Werkzeuge

Webseiten-Werkzeuge


linux:vi

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

linux:vi [2023/05/05 12:20] (aktuell)
raiser angelegt
Zeile 1: Zeile 1:
 +Formatierung einer Datei [DOS/UNIX/ ...] ( CR+LF/LF/ ...)
 +  *anzeigen
 +<​code>:​set ff ?</​code>​
 +  *ändern
 +<​code>:​set ff=dos</​code>​
 +
 +Codierung einer Datei (latin1 [=iso-8859-1]/​iso-8859-n/​UTF-8/​...)
 +  *anzeigen
 +<​code>:​set encoding</​code>​
 +  *ändern
 +<​code>:​set encoding=utf-8</​code>​
 +
 +Neu einlesen einer extern geänderten Datei
 +<​code>:​e!</​code>​
 +
 +
 +====== 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: ​
 +<​code>#​vi filename </​code>​
 +
 +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 <​ESC> ​    ​insert,​ Text vor Cursorposition einfügen
 +    I text <​ESC> ​    Text am Zeilenanfanf einfügen
 +    a text <​ESC> ​    ​append,​ Text hinter Cursorposition einfügen
 +    A text <​ESC> ​    Text am Zeilenende einfügen
 +    o text <​ESC> ​    open, neue Zeile hinter aktueller Zeile einfügen
 +    O text <​ESC> ​    neue Zeile vor aktueller Zeile einfügen
 +    R text <​ESC> ​    ​replace,​ nachfolgenden Text überschreiben
 +    C text <​ESC> ​    ​change,​ nachfolgenden Text bis Zeilenende ersetzen
 +    ctrl v <​s> ​      im Insertmodus einfügen von Steuerzeichen <s>
 +    \                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<CR> 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
 +
  
linux/vi.txt · Zuletzt geändert: 2023/05/05 12:20 von raiser