ABSTRACT: kurzeinfuehrung fuer den editor vi / ex AUDIENCE: beginners SYSTEM: any unix SECTION: basic unix commands AUTHOR: cjm COPYRIGHT: GNU Free Documentation Licence http://www.gnu.org/licenses/fdl.txt geschichte / aufruf: ~~~~~~~~~~~~~~~~~~~~ ``vi'', /V-I/. man spricht es wie ``v'' und dann ``i'' im englischen, oder auch deutschen aus. vi steht fuer ``visual-interface'' und hat seine wurzeln in fruehen versionen von Berkeley UNIX (auch BSD). spaeter wurde der editor von allen unices adaptiert/portiert da er sehr praktisch und schlank ist. ``vi'' hat weiters sehr viele verwande/abgewandte editoren wie nvi, vim (vi-iMproved), elvis, ... ... wir wollen in dieser CD aber nur plain-vi durchgehen weil das ohnehin fuer alle versionen gilt. ``vi'' ist/sollte auf jedem ausgelieferten Linux/UNIX vorhanden sein - dies ist einer der groessten vorteile dieses editors. auch in situationen wo andere editoren nicht verfuegbar sind ist ``vi'' normalerweise zu ge- brauchen. (``vi'' braucht ein funktionierendes terminal wie VT100 oder was anderes, wohingegen ``ex'' auch mit dumb-terminals verwendbar ist -> zeilen- orientiert). ex/vi sind an und fuer sich dasselbe programm das nur verschieden aufgerufen wird. der syntax zum starten von vi sieht meist so aus: $ vi filename oder $ vi filename1 filename2 filename3 [...] hier kann natuerlich auch file-globbing verwendet werden. z.b. sehr nuetz- lich sind aufrufe wie: $ vi *.c was z.b. alle files mit der endung .c aufmacht (der reihe nach). umschalten kann man dann im editor z.b. mit ``:n (next file)''. vi hat auch einen sog. recovery-mode der in den meisten vi-implementationen mit -r zu erreichen ist. recovery hilft z.b. wenn waehrend einer editor- session der server abstuerzt, rebootet wird, usw. damit laesst sich die abge- brochene editor-session wieder retten. z.b. $ vi -r vi: no files to recover. Einfaches Editieren: ~~~~~~~~~~~~~~~~~~~~ nachdem nun vi mit einem textfile (oder einfach nur vi ohne was -> leeres text-dokument) gestartet wurde steht man vor einem bildschirm der aussieht wie: [] <-- Cursor ~ ~ ~ ~ ~ /tmp/vi.Ul1449: new file: line 1 das sieht alles ein wenig cryptisch aus zu beginn - ganz unten haben wir eine statuszeile die nach dem aufruf das aktuelle file und die position im file zeigt. (kann man beim editieren mit ^G auch anzeigen lassen). in dieser statuszeile werden auch befehle eingegeben vom benutzer. ganz wichtig bei ``vi'' ist dass es 2 modi gibt. einen command-mode und einen insert-mode. umschalten kann man mit (escape-taste, auf den meisten keyboards links oben). ist man sich unsicher in welchem modus man ist am besten einmal druecken. dann ist man mit sicherheit im command-mode. befehle bestehen in ``vi'' meistens aus einem einzelnen buchstaben. hier moechte ich die wichtigsten kurz erklaeren. befehle funktionieren generell nur im command mode da man im insert-mode eben nur zeichen einfuegt. cursorbewegung: h bewege cursor ein zeichen nach links j bewege cursor eine zeile nach unten k bewege cursor eine zeile nach oben l bewege cursor ein zeichen nach rechts bei manchen Linux/UNIX-arten funktionieren auch die sog. cursor-tasten (pfeile). man sollte aber generell versuchen mit den oben erklaerten bewegungsbefehlen zu arbeiten weil das immer und ueberall funktioniert. man kann unter ``vi'' auch die anzahl der folgenden befehle angeben. z.b. wuerde funktionieren: 5j <- bewegt den cursor 5 zeilen nach unten oder: weitere wichtige befehle sind: /text sucht nach dem string ``text'' und bewegt den cursor an die erste stelle des gefundenen wortes. tut nichts wenn nichts gefunden wird. a ``append'' - heisst soviel wie fuegt text NACH dem cursor ein. i ``Insert'' - fuegt text for dem aktuellen cursor ein. o macht eine neue zeile unter der zeile in der der cursor steht und schaltet auf insert-modus um. hierbei sei erwaehnt dass nachdem man einen der insert befehle a, i oder o verwendet hat und fertig mit texttippen ist man mit in den command- mode umschalten sollte. wichtige befehle zum textkopieren: yy kopiert die zeile in der sich der cursor befindet in den zwischenbuffer. achtung: auch hier geht natuerlich z.b. 5yy um 5 zeilen in den zwischenbuffer zu kopieren! p kopiert die zeile die im zwischenbuffer gespeichert ist nach der zeile wo grad der cursor steht. wichtige befehle zum loeschen von text: dd loescht eine zeile. auch hier gilt z.b. 10dd um 10 zeilen zu loeschen. x loescht das aktuelle zeichen in der cursor-position. befehle zum abspeichern/quitten: speichern: :w schreibt das file mit dem aktuellen namen (den, den man beim aufruf von ``vi'' angegeben hat. :w file_name schreibt das aktuelle text-document in ein neues file namens ``file_name''. kann auch zum ueberschreiben von dateien genommen werden. ausstieg: :q versucht vi zu beenden - klappt aber nur wenn es keine nichtgeschriebenen veraenderungen in der datei gibt - wurde was veraendert muss :w um zu speichern verwendet werden oder: :q! steigt aus egal ob gespeichert wurde. beendet vi in jedem fall. vielleicht wichtig vor allem fuer anfaenger ist die sequenz: :q! um ggf. von insert->command-mode zu schalten und vi zu beenden. (Note: diese befehle funktionieren alle auch bei ex, nur sieht man eben immer nur die aktuelle zeile des dokuments.) weitere befehle zum navigieren in groesseren datein: : geht zu zeilennummer . G geht zum dateiende. 1G geht zum dateianfang. kann auch mittels :0 erlangt werden. ^ geht zum zeilenanfang $ geht zum aktuellen zeilenende ^F (forward) geht eine seite nach vorn ^B (backward) geht eine seite zurueck ^U (up) geht eine halbe seite zurueck ^D (down) geht eine halbe seite nach vorn wurde ``/text'' verwendet um nach einem textbruchstueck in einer datei zu suchen ist es oft praktisch wiederkehrende ``matches'' zu finden. d.h. ich will einfach weitersuchen zum naechsten ``text''. dies kann man bei ``vi'' mit den befehlen n (sucht vorwaerts nach dem letzten suchbegriff) und N (sucht rueckwaerts nach dem letzten suchbegriff) erreichen. ``vi'' ist ein sehr maechtiger und umfassender editor mit dem man eigentlich fast alles mit textdateien machen kann. die befehle die wir hier gehoert haben sollten an und fuer sich lagen zum einfachen editieren. wer mehr will -> einfach einen kurzen blick in die manpage werfen oder die referenzen am ende dieses CD's ansurfen. EXERCISES: 1.) starten/tippen/schreiben/aussteigen von vi anhand einer neuen datei. 2.) lerne ein wenig mit vi umzugehen indem du ein schon vorhandenes textfile mit ``cp'' kopierst und die kopie dann oeffnest, ver- aenderst und dann abspeicherst. hint: du kannst auch den befehl ``u'' fuer undo last command oder ``U'' fuer undo line testen. REFERENCES: [0] ``man vi'' [1] http://www.uwsg.iu.edu/edcert/session3/editors/vi.html [2] http://www.thomer.com/thomer/vi/vi.html [3] http://www.ora.com/catalog/vi6/ [4] dein sysadmin wird dir gerne helfen beim problemen mit vi