Logo der Universität Hamburg, nur Graphik Regionales Rechenzentrum Logo des RRZ, nur Graphik

Unix Editor vi

 
UNIX liefert als Standardeditor den vi. Somit ist der vi auf 
jeder Unixplattform verfügbar. Allerdings ist der vi sehr 
gewöhnungsbedürftig. Er vermittelt halt das feeling der 70'er.
 
    Aufruf:		vi filename 
                        view filename    [nur lesend]

Damit wird die Datei in den Editorbuffer geladen und die ersten 
23 Zeilen auf dem Bildschirm ausgegeben, falls vorhanden, sonst 
wird sie neu angelegt. 
Der vi kennt zwei Modi, den Kommandomodus und den Insertmodus. 
Nach Aufruf befindet man sich im Kommandomodus. Um einen Text 
eingeben zu können, muß man als erstes in den Insertmodus wechseln! 
In den Insertmodus gelangt man durch Eingabe von i, zurück 
in den Kommandomodus mit der ESC-Taste. 

Einige der folgenden Kommandos sind auch bei der Benutzung des 
'Histories' (zurückholen und editieren alter Kommandos) sinnvoll 
einsetzbar. Näheres hierzu finden Sie am Ende des Textes.
     
Die wichtigsten Kommandos: 
-------------------------- 
  :wq 	         Datei sichern und Editor verlassen 
  :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 Editorbuffer einlesen und an aktueller 
                 Cursorposition einfügen 
  :n   	         next, die nächste Datei aus der Aufrufliste 
                 wird in den Editorbuffer geladen 
 
  i text 'ESC'   insert, Text vor Cursorposition einfügen 
  a text 'ESC'   append, Text hinter Cursorposition einfügen 
  A text 'ESC'   Text am Zeilenende anfügen 
  o text 'ESC'   open, neue Zeile hinter aktueller Zeile einfuegen 
  R text 'ESC'   replace, nachfolgenden Text überschreiben 
  C text 'ESC'   change, nachfolgenden Text bis Zeilenende ersetzen 
 
  ctrl v L       im Insertmodus einfügen von Steuerzeichen z.B. ^L  
  [Alt]-[nnn]    ASCII-Zeichen nnn, z.B. [Alt]-[065] -> A
  \              Wirkung des nachfolgenden Sonderzeichens wird 
                 aufgehoben. Dies kann z.B. beim suchen wichtig sein.
 
  r c            replace,ersetze aktuelles Zeichen durch c 
  x              lösche aktuelles Zeichen 
  cw             change word, der Rest des aktuellen Wortes wird ueberschrieben 
  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 Buffer ge- 
                 schrieben. Wird n nicht angegeben, wird die akt. Zeile gebuffert. 
  yw             Wort wird ab Cursorposition gebuffert 
  p              paste, schreibt den Bufferinhalt hinter 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 er- 
                 setzen,bei Eingabe von y[CR] wird ersetzt, sonst nicht 
 
  /suchstring    sucht ab aktueller Cursorposition nach string 
  ?suchstring    sucht analog rückwärts 
  n	         next, wiederhole das letzte Suchkommando 
 
Cursorpositionierung: 
---------------------
Die Cursortasten sollten funktionieren, aber auch: 
  h              Cursor nach links
  l              Cursor nach rechts
  j              Cursor nach unten
  k              Cursor nach oben
  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
  :%             Anfang der letzten Zeile

 
  :!kommando     Ausführen eines Shell-Kommandos innerhalb des vi's 
  !!kommando     Ausführen eines Shell-Kommandos, Ausgabe in den Text 
 
Set-Optionen 
------------
  :set all       listet sämtliche momentanen Einstellungen 
  :set nu        automatische Zeilennumerierung einstellen 
  :set nonu      Zeilennumerierung ausstellen 
  :set showmode  Anzeige des Insertmodus 
  :set list      Zeigt versteckte TABs etc. an.
 
Viele weitere Funktionen finden Sie in den Manpages:  'man vi'.  

 
Der Bonbon: Benutzung des Histories in der ksh
----------------------------------------------
Mit dem Kommando 

  $set -o vi 

können Sie mit den vi-Kommandos in Ihren letzten (128) Unix-
Befehlen blättern und diese auch editieren. Diesen Befehl tragen 
Sie vorteilhafterweise in die Datei .kshrc ein. In Ihrem .profile 
sollten Sie dann aber auch folgende Zeile mit aufnehmen: 
  export ENV=.kshrc

Die Cursortasten sollten Sie beim editieren alter Kommandos nicht benutzen!
  ESC            in den 'Kommandomodus' schalten
  k              einen Befehl zurück in die Vergangenheit (- geht auch)
  j              einen Befehl vor (+ geht auch)
  /suchstring    letzter Befehl, in dem 'suchtring' vorkommt
  l,h,i,x,r,R,.. wie vom vi her gewohnt
  ^C             eine mißlungende Unixzeile abwürgen

Mit ESC k erhalten Sie also den letzten, mit 
ESC k k den vorletzten Befehl. 

Startseiten: Server - Software - Unix - CAMPUS-/public-Server