Benutzer-Werkzeuge

Webseiten-Werkzeuge


der_unix-standard-editor_vi

====== 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

der_unix-standard-editor_vi.txt · Zuletzt geändert: 2019/09/11 13:09 von manfred