Benutzer-Werkzeuge

Webseiten-Werkzeuge


der_unix-standard-editor_vi

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
der_unix-standard-editor_vi [2016-04-12 22:49:58] – Externe Bearbeitung 127.0.0.1der_unix-standard-editor_vi [2019-09-11 11:09:32] (aktuell) – [der UNIX-Standard-Editor vi] manfred
Zeile 1: Zeile 1:
 +====== der UNIX-Standard-Editor vi ======
 +
 +Es ist einer der ältesten Editoren in der PC-Geschichte, der noch heute intensiv genutzt wird und der auf so ziemlich jeden UNIX-Like Betriebssystem vorhanden ist.
 +
 +Wenn einer unbedingt will, kann auch den "ee" (easy edit), "pico" oder "nano" verwenden.
 +Die sind für ungeduldige Windowsumsteiger vielleicht besser geeignet.
 +
 +Allerdings sind die heute verwendeten Nachfolger nicht in jedem Fall kompatibel.
 +Die größten Unterschiede gibt es in den Erweiterungen,
 +denn der Ur-vi konnte noch nicht alles, was seine aktuellen Nachfolger können.
 +
 +Der wichtigste Unterschied liegt in der //Undo//- und //Redo//-Funktionalität.
 +
 +Ich betrachte hier nur die beiden am stärksten verbreiteten vi-Klone:
 +  - nvi (BSD)
 +  - [[::vi / vim|vim]] (Linux)
 +
 +Es gibt da aber noch den "elvis" und andere Klone.
 +
 +Der Original-vi sowie der "nvi" speichern den Texts im RAM, der "vim" und der "elvis" speichern den Texts in einer temporären Datei.
 +Deshalb können der "vim" und der "elvis" auch solche Monster-Textdateien öffnen, die nicht mehr in den RAM passen.
 +
 +
 +===== Undo- / Redo-Unterschiede =====
 +
 +Löscht man aus versehen etwas zuviel und möchte die zuviel gelöschten Zeichen wieder zurück holen,
 +dann ist es bei einem einzigen Zeichen noch einfach.
 +
 +Mit einem Druck auf die Taste "[U]" (**U**ndo bzw. **U**mschaltung) ist alles wieder im Lot.
 +
 +Schwierig wird es da, wenn mehrere Zeichen zurückgeholt werden sollen.
 +
 +Am besten zeige ich das mal an Hand eines Beispieltextes bezogen auf einen bestimmten vi-Klon.
 +
 +Bitte nicht daran stören, das der Text an den Haaren herbeigezogen wurde und meine persönliche Meinung wiederspiegelt.  ;-)
 +
 +
 +==== "nvi"-Beispiel (BSD) ====
 +
 +Wir tippen zuerst den Text mit Tippfehler:
 +
 +  Der vi ist der beste editor der welt._
 +
 +Jetzt löschen wird mal etwas durch mehrfaches drücken der Tast "[X]" wieder weg bis nur noch dieser Text da steht:
 +
 +  Der vi ist_
 +
 +Durch einmaliges Drücken der Taste "[U]" hat man die //Laufrichtung// der Taste "[.]" (repeat/Wiederholung) von "vorwärts" auf "rückwärts" **U**mgeschaltet und dabei auch das als letztes gelöschte Zeichen wieder zurück bekommen.
 +
 +Um noch mehr Zeichen zurück zubekommen, muss man jetzt einfach nur die Taste "[.]" (repeat/Wiederholung) so oft drücken wie man möchte.
 +
 +Das nennt sich //Undo//.
 +
 +  Der vi ist der beste_
 +
 +Jetzt haben wir etwas zuviel zurückgeholt, das kann man durch löschen oder durch //Redo// wieder entfernen.
 +
 +//Redo// bedeutet, man macht das //Undo// wieder rückgängig, also //Re-Undo//.
 +
 +Hierzu wird einfach nocheinmal die Taste "[U]" gedrückt und dann hat man die //Laufrichtung// der Taste "[.]" (repeat/Wiederholung) von "rückwärts" wider auf "vorwärts" **U**mgeschaltet und dabei auch das als letztes wieder hergestellte Zeichen entfernt.
 +
 +Jetzt kann man mit der Taste "[.]" (repeat/Wiederholung) wieder in seiner "Historie" in der gewählten //Laufrichtung// fort fahren:
 +
 +  Der vi ist der _
 +
 +Jetzt schreiben wir weiter:
 +
 +  Der vi ist der allerbeste Editor der Welt._
 +
 +
 +==== "vi"-Beispiel (Linux) ====
 +
 +Wird der "vim" mit dem Kommando "vi" aufgerufen, reagiert er genauso wie man es von einem "vi" erwartet,
 +wird er dagegen mit dem Kommando "vim" oder "view" aufgerufen, dann reagiert er eher wie "Word"!!!
 +
 +"vim" heißt der wohl größte "vi"-Klon, für dieses Beispiel wird er mit dem Kommando "vi" aufgerufen.
 +
 +
 +Wir tippen zuerst den Text mit Tippfehler:
 +
 +  Der vi ist der beste editor der welt._
 +
 +Jetzt löschen wird mal etwas durch mehrfaches drücken der Tast "[X]" wieder weg bis nur noch dieser Text da steht:
 +
 +  Der vi ist_
 +
 +Durch einmaliges Drücken der Taste "[U]" hat man die //Laufrichtung// der Tastenkombination "[Strg]+[R]" (repeat/Wiederholung) von "vorwärts" auf "rückwärts" **U**mgeschaltet und dabei auch das als letztes gelöschte Zeichen wieder zurück bekommen.
 +
 +Um noch mehr Zeichen zurück zubekommen, muss man jetzt einfach nur die Tastenkombination "[Strg]+[R]" (repeat/Wiederholung) so oft drücken wie man möchte.
 +
 +Das nennt sich //Undo//.
 +
 +  Der vi ist der beste_
 +
 +Jetzt haben wir etwas zuviel zurückgeholt, das kann man durch löschen oder durch //Redo// wieder entfernen.
 +
 +//Redo// bedeutet, man macht das //Undo// wieder rückgängig, also //Re-Undo//.
 +
 +Hierzu wird einfach nocheinmal die Taste "[U]" gedrückt und dann hat man die //Laufrichtung// der Tastenkombination "[Strg]+[R]" (repeat/Wiederholung) von "rückwärts" wieder auf "vorwärts" **U**mgeschaltet und dabei auch das als letztes wieder hergestellte Zeichen entfernt.
 +
 +Jetzt kann man mit der Tastenkombination "[Strg]+[R]" (repeat/Wiederholung) wieder in seiner "Historie" in der gewählten //Laufrichtung// fort fahren:
 +
 +  Der vi ist der _
 +
 +Jetzt schreiben wir weiter:
 +
 +  Der vi ist der allerbeste Editor der Welt._
 +
 +Die Taste "[.]" hat hier nur die einfache Funktion, dass sie das letzte Kommando wiederholt.
 +In diesem Lösch-Beispiel wäre das die Taste "[X]".
 +
 +
 +==== "vim"-Beispiel (Linux) ====
 +
 +Wird der "vim" mit dem Kommando "vim" oder "view" aufgerufen, reagiert er wie "Word",
 +wird er dagegen mit dem Kommando "vi" aufgerufen, dann reagiert er genauso wie man es von einem "vi" erwartet.
 +
 +"vim" heißt der wohl größte "vi"-Klon, für dieses Beispiel wird er mit dem Kommando "vim" aufgerufen.
 +
 +
 +Wir tippen zuerst den Text mit Tippfehler:
 +
 +  Der vi ist der beste editor der welt._
 +
 +Jetzt löschen wird mal etwas durch mehrfaches drücken der Tast "[X]" wieder weg bis nur noch dieser Text da steht:
 +
 +  Der vi ist_
 +
 +Durch beliebig oftes Drücken der Taste "[U]" bekommt man die gelöschten Zeichen wieder zurück.
 +
 +Das nennt sich //Undo//.
 +
 +  Der vi ist der beste_
 +
 +Jetzt haben wir etwas zuviel zurückgeholt, das kann man durch löschen oder durch //Redo// wieder entfernen.
 +
 +//Redo// bedeutet, man macht das //Undo// wieder rückgängig, also //Re-Undo//.
 +
 +Durch beliebig oftes Drücken der Tastenkombination "[Strg]+[R]" (//Redo//) werden die wiederhergestellten Zeichen wieder entfernt:
 +
 +  Der vi ist der _
 +
 +Jetzt schreiben wir weiter:
 +
 +  Der vi ist der allerbeste Editor der Welt._
 +
 +Die Taste "[U]" hat hier die Funktion "Rückgängig" und die Tastenkombination "[Strg]+[R]" hat hier die Funktion "Wieder herstellen".
 +Ganz so wie man es von "Word" bzw. "Wordpad" kennt.
 +
 +Das ist in meinen Augen zwar ein guter Editor, er verdient aber nicht das "vi" im Namen, da er gegen die "vi"-Philosophie verstößt.
 +Er hätte besser den Namen "Wordpad" bekommen sollen.
 +
 +
 +===== Liste der wichtigsten Funktionen (nvi, sollten aber auch im vi/vim funktionieren) =====
 +
 +  .   ....................der "Punkt" hat die Funktion "letzten Befehl wiederholen"
 +  3.  ....................wiederholt den letzten Befehl 3 mal
 +  i.......................fügt vor dem Cursor ein
 +  I.......................fügt am Zeilenanfang ein
 +  a.......................fügt nach dem Cursor ein
 +  A.......................hängt am Zeilenende an
 +  o.......................öffnet unter dem Cursor eine Zeile
 +  O.......................öffnet ueber dem Cursor eine Zeile
 +  s.......................ersetzt ein Zeichen
 +  3s......................ersetzt 3 Zeichen
 +  S.......................ersetzt die ganze Zeile
 +  cc......................ersetzt die ganze Zeile
 +  cG......................ersetzt alles bis ans Dateiende
 +  c3c.....................ersetzt die nächsten 3 Zeilen
 +  c3w.....................ersetzt die nächsten 3 Wörter
 +  M.......................bewegt die aktuelle Zeile in Bildschirmmitte
 +  w.......................Wortweises springen
 +  $.......................Zeilenende
 +  0.......................Zeilenanfang
 +  _.......................Zeilenanfang
 +  x.......................löscht an der aktuellen Cursorposition
 +  X.......................löscht ein Zeichen rückwärts
 +  3X......................löscht 3 Zeichen rückwärts
 +  dd......................löscht die aktuelle Zeile
 +  3dd.....................löscht 3 Zeilen
 +  D.......................löscht Text vor der Cursorposition bis Zeilenende
 +  d^......................löscht rückwärts bis zum Zeilenanfang
 +  dG......................löscht bis Dateiende
 +  d1G.....................löscht bis Dateianfang
 +  ~.......................wandelt das aktuelle Zeichen um (Gross- / Kleinschreibung)
 +  3~......................wandelt die nächsten 3 Zeichen um (Gross- / Kleinschreibung)
 +  yy......................legt die aktuelle Zeile in "den" Puffer
 +  "ayy....................legt die aktuelle Zeile im Puffer a ab an der Cursorposition ein
 +  "a3yy...................legt die aktuelle Zeile und die 3 darunter liegenden Zeilen in den Puffer a
 +  "ayw....................legt das Wort rechts vom Cursor in den Puffer a
 +  "ayb....................legt das Wort links vom Cursor in den Puffer a
 +  p.......................setzt "den" Pufferinhalt
 +  "ap.....................setzt den Pufferinhalt von Puffer a
 +  [Shift]+"j".............Zeilenumbruch löschen
 +  "m"+[Buchstabe].........Marke setzen
 +  '+[Buchstabe]...........zur Marke springen
 +  3+"dd"..................lösche die nächsten 3 Zeilen
 +  :set number.............(:set nu) Zeilennummern einschalten
 +  :set nonumber...........(:set nonu) Zeilennummern ausschalten
 +  :set list...............auch unsichtbare Zeichen anzeigen
 +  :set nolist.............unsichtbare Zeichen nicht anzeigen
 +  :set noautoindent.......ab jetzt wird auch wenn man eine Zeile eingerückt hat, bei [Enter] immer wieder an den Zeilenanfang zurück gesprungen
 +  :wq.....................speichert und schliesst die Datei
 +  :w [Dateiname]..........speichen unter [Dateiname]
 +  :w![Dateiname]..........überschreibt die Datei mit [Dateiname]
 +  :r [Datei]..............einlesen einer [Datei] in die geöffnete Datei
 +  :1,30000w [Datei].......speichert die ersten 30000 Zeilen in [Datei]
 +  :q......................schließt die Datei
 +  :q!.....................schließt die Datei und verwirft vorgenommene Änderungen
 +  :/[Zeichenfolge]........sucht [Zeichenfolge], mit n weiter, mit N zurück
 +  \<......................Wortanfang
 +  \>......................Wortende
 +  :%s/[alt]/[neu]/g.......ersetzt in ganzer Datei (%) [alt] gegen [neu], nicht nur das 1. je Zeile (g)
 +  :%s/\<[alt]\>/[neu]/g...wie oben, es wird jedoch nur nach ganzen Worten gesucht
 +  :E......................öffnet einen zweiten Editor mit der selben Datei / wechseln mit ^w
 +  :N [Dateiname]..........öffnet einen zweiten Editor mir der Datei [Dateiname] / wechseln mit ^w
 +
 +
 +===== Editiermodus auf der Konsole umschalten =====
 +
 +Wenn man sich an die vi-Eingabeform und seine Kommandos gewöhnt hat,
 +ist man mit ihm schneller als mit irgend einem anderen Editor!
 +Um die Vorteile des vi's auch in der Shell zu nutzen,
 +kann man diese auch in den vi-Modus umschalten:
 +  - csh  :   bindkey -vi
 +  - bash :   set  -o  vi
 +
 +Um die Einstellungen wieder auf den //STANDARD// zurück zu schalten,
 +muss folgendes eingegeben werden:
 +  - csh  :   bindkey -emacs
 +  - bash :   set  -o  emacs
 +