| Erste Schritte |
|
|
|
Erste Schritte mit dem vimuser@host:~> vimtutoroder, wenn es auf Englisch erscheint und unerwünscht ist, dann user@host:~> vimtutor geum den vimtutor zu starten. Nehmen Sie sich einmal diese 30 Minuten, die Sie wahrscheinlich brauchen werden. Nun wollen wir uns ein "Basis-Set" an Befehlen bzw. an Last-Line-Befehlen (ex-Befehlen) des vim ansehen. Sie sollen damit in die Lage versetzt werden, mit dem vim Texte zu schreiben, den Cursor im Text zu bewegen, den Text abzuspeichern und in Dateien abgespeicherte Texte wieder mit dem vim zu öffnen. Ach ja - nicht dass es von dringlichster Wichtigkeit wäre - aber Sie werden, wohl oder übel auch die Prüfungsfragen mit dem vim öffnen und beantworten und abspeichern. Wie man richtig zwischensichert, wird daher von besonderem Interesse sein. user@host:~> vim erstes.shUm Platz zu sparen, habe ich jetzt hier nicht die ganze Bildschirmseite wiedergegeben (die zwei mit je dreiPunkten markierten Zeilen symbolisieren, dass noch weitere exakt gleiche Zeilen folgen). Offensichtlich ist der Eingabeprompt nicht mehr zu sehen (nur für den Fall,
dass Sie ihn suchen sollten!). Es hat sich (bildlich gesprochen) auf dem tty ein
25-zeiliges "Fenster" geöffne. Das es noch leer ist, sieht man am linken Rand
die zahlreichen ˜-Zeichen, die jeweils eine virtuelle Leerzeile anzeigen; damit
soll der maximal mögliche Zeilenbereich vorab angezeigt werden, der am
Bildschirm angezeigt werden kann; in unserem Beispiel beläuft sich der
Zeilenbeeich auf 24 Zeilen, derzeit noch markiert durch das ˜-Zeichen. Es ist
also noch ein "leeres Blatt'l Papier". :w Jetzt haben wir den aktuellen Inhalt zwischengesichert und gleichzeitig das
file namens erstes.sh erstellt, das dann alle zukünftigen Einträge enthalten
soll. "erstes.sh" [New] 0L, 0C written "NEW" in den eckigen Klammern machte uns darauf aufmerksam, dass "erstes.sh"
neu erstellt wurde Wer dann gleich lostippen möchte, wrid dann einmal sein "blaues Wunder" erleben, denn wir befinden uns vorerst noch im sogenannten Befehlsmodus. Warum gibt es einen Befehlsmodus?Es gibt im vim keine menues wie
vereinzelt in anderen Editoren (e.g. xemacs), und selbst da werden zahlreiche
Tastenkombinationen angeboten, mit denen eine Aktion durchgeführt wird.
Der Befehlsmodus bietet Ihnen die Möglichkeit, Aktionen einzuleiten, indem
Sie einen "Tastenbefehl" absetzen. Wenn das Ihr Wunsch ist, so geben Sie den Befehl "insert" (einfügen). Wie tun
Sie das? Wollten Sie nun erneut das Kommando i geben, so würde bloss ein kleines i gedruckt im Text erscheinen, sonst nix, weil der vim nicht in den Befehlsmodus zurückwechselte. Nur im Befehlsmodus können Sie Befehle absetzen! Das ist gewöhnungsbedürftig, aber Sie werden die Umstellung sicher ganz schnell schaffen. Um wieder in den Befehlsmodus zurückkehren zu können, brauchten Sie bloss die ESC-Taste zu drücken, und schon ist der vim bereit, Ihre nächste Anweisung entgegen zu nehmen. "Strg-C" ist die zweite Möglichkeit, um in den Befehlsmodus zu gelangen. Wenn Sie sich gerade nicht sicher sind, in welchem Modus der vim gerade steht, dann drücken Sie doch einfach die ESC-Taste, denn dann können Sie sich in den meisten Fällen sicher sein, dass Sie im Befehlsmodus sind. Wechsel in den EinfügemodusWie bereits eingangs erwähnt, müssen Sie in
den Einfügemodus (Eingabemodus) wechseln, wollten Sie Texte eintippen.
Die einfachste Variante, um in den Einfügemodus zu gelangen ist jene mit dem
BEFEHL i. i steht für das englische Wort "insert" und bedeutet einfügen.
Nach dem Drücken der i-Taste können sie genau an der Stelle anfangen, Texte
einzutippen, wo der Cursor vor dem Wechsel von Befehlsmodus in den Einfügemodus
stand. Das Bewegen des Cursors können Sie übrigens im Befehlsmodus auch mit den
Tasten h,j,k,l bewerkstelligen, wobei h den Cursor nach links
bewegt, j nach unten, k nach oben und l nach rechts. Um am Zeilenanfang der Cursorzeile (Cursorzeile ist jene Zeile, in der sich der cursor gerade befindet) zusätzlichen Text einzutippen, können Sie nun den Cursor im Befehlsmodus ganz nach links bis zum Zeilenanfang bewegen, dort dann i drücken, um in den Eingabemodus zu wechseln und lostippen zu können. Das hat einen entscheidenden Nachteil: Es dauert lange, bis der Cursor dort ist. Eine bessere Möglichkeit stellt die "POS1"-Taste dar, die Ihnen den Cursor an die erste Position der Zeile setzt. Übrigens - Cursor-Tasten sowie POS1, ENDE-Taste, oder PGUP/PgDown-Tasten funktionieren auch, wie gewohnt, im Eingabemodus! Die eleganteste Methode aber ist jene mit "I" (grosses i). I bewegt den Cursor an die erste Stelle der Zeile und wechselt den Modus von Befehlsmodus in Einfügemodus. "A" bewegt den Cursor im Befehlsmodus ans Zeilenende und wechselt den Modus
von Befehlsmodus in den Einfügemodus. Und jetzt dürfen Sie drei mal raten, was
passiert, wenn Sie sich im Einfügemodus befinden, und da die Taste "A"
drücken. Das kleine a stellt insofern einen Sonderfall dar, da dieser Befehl
den Cursor um eine Stelle nach rechts (in Leserichtung also) rücht und erst dann
in den Einfügemodus wechselt. Wenn Sie jetzt also schon die ersten Zeilen "geschrieben" haben, dann ist es
wieder an der Zeit, den aktuellen Stand zu sichern. Es geht dabei nur darum,
etwaigen Textverlusten vorzubeugen, die passieren könnten, wenn unvorhergesehen
plötzlich der Strom weg wäre, oder ähnliches passierte. Manchmal möchte man unterhalb der Cursorzeile einen neuen Absatz beginnen,
und man müsste quasi ans Zeilenende hüpfen, dort in den Einfügemodus wechseln,
und dann mit der RETURN-Taste (Enter-/Eingabetaste) eine neue (Leer-)Zeile
einfügen.
Was hier manchmal ungewöhnlich erscheint ist die Länge einer Zeile ... Eine Zeile endet genau da, wo Sie die Eingabetaste gedrückt hatten. So eine Zeile kann also über mehrere Bildschirmzeilen gehen! Um schnell das Zeilenende aufzusuchen, drücken Sie die ENDE-Taste, oder im Befehlsmodus $. O (grosses o) bewirkt, dass
Jetzt haben wir bereits sechs Befehle kennengelernt, mit deren Hilfe wir in
den Einfügemodus wechseln können. Mehr FortbewegungshilfenMit user@host:~> echo $LINES 25 user@host:~> echo $COLUMNS 80
user@host:~>
können Sie feststellen, wieviele Zeilen (von oben nach unten) und
wieviele Zeichen pro Zeile (links nach rechts) Ihnen am Bildschirm angezeigt
werden können. Da Ihnen die unterste Bildschirmzeile immer als "Statuszeile" dient, bleiben Ihnen 24 Zeilen zum Tippen. Mit dem Befehl H bewegen Sie den Cursor in die oberste Zeile des
Zeilenbereichs, der Ihnen am Bildschirm angezeigt wird, und in dieser Zeile
kommt der cursor auf das erste Zeichen der Zeile zu stehen, das kein Leerzeichen
oder Tabulator ist. Um den Cursor mit einem Tastendruck in die unterste Zeile des gesamten Dokuments zu bewegen, geben wir das Kommando G (Shift+g). Um gezielt eine Zeile durch Angabe einer Zeilennummer anzusteuern, verwende ich wieder G und stelle die gewünschte Zeilennummer voran. 15G bewegt den Cursor in die 15-te Zeile. Strg-g hilft mir, das zu überprüfen. Strg-g gibt nun Auskunft in der Statuszeile darüber, wie das file
heisst, das gerade bearbeitet wird (plus etwaig vorangestellte Pfadangabe, falls
es eine Absolute Pfadangabe oder eine (explizit) relative Pfadangabe beim Aufruf
des files gab), dann wird in eckigen Klammern darauf hingewiesen, wenn es
"Modified" (verändert) wurde, damit wir wissen, dass wir noch ungesicherte
Änderungen im Text haben - wenn Sie Strg-g unmittelbar nach einem
Zwischensichern drücken, gibt es diesen Eintrag nicht. Neben z.B. 2G gibt es auch die Möglichkeit eines last-line Kommandos,
nämlich :2, was dasselbe bewirkt. Wie gesagt, Ziel ist es, den Cursor
gezielt in eine gewisse Zeile zu setzen. so, jetzt wird's resch! Na, scherzerl - Eine weitere Methode, den Cursor schnell in einer Zeile von Wort zu Wort
hüpfen zu lassen besteht durch das Kommando w (klein w) oder W
(grosses w). Der Cursor hüpft von einem Wortanfang zum nächsten. Die Befehle e und E tun fast dasselbe wie w und W, nur da hüpft der Cursor ans Wortende und nicht an den Wortanfang. ... und was in Leserichtung geht, das geht auch in entgegengesetzter Leserichtung mittels den Befehlen b und B. Für "w, W, e, E, b, B" gilt übrigens wieder, dass wenn Sie z.B. 3w
angeben, dass dann der Cursor ab aktueller Cursorposition drei Wörter in
Leserichtung weiterbewegt wird. Sie können nun Dateien mit dem vim erstellen, mit dem vim öffnen, Texte an gewünschten Stellen hinzufügen, die Änderungen abspeichern, sich im Text von Zeile zu Zeile bzw. von Wort zu Wort bewegen und das Textfile wieder verlassen. Wie sieht es mit Textkorrekturen aus? Mit Strg-f können Sie Bildschirmseitenweise weiterblättern - der Cursor wird dabei dann immer auf die oberste Zeile des angezeigten Zeilenbereiches gesetzt. Mit dem Befehl Strg-b wird seitenweise zurückgeblättert, und der cursor kommt in der untersten Zeile der Bildschirmausgabe zu liegen. TextkorrekturenIm vim funktionieren per default die gewohnten
"Entf"-Taste im Befehlsmodus und im Einfügemodus und die "Backspace"-Taste im
Einfügemodus zum Löschen des Zeichens links vom cursor und im Befehlsmodus zum
Bewegen des Cursors zeichenweise in entgegengesetzter Leserichtung, was Ihnen
immer über die Runden hilft, wenn Sie sich am Anfang schwer tun, die folgenden
Befehle zu merken. Warum das mit Backspace im Einfügemodus funktioniert, schauen
wir uns in einem anderen vim-link an, weil uns das im Moment noch net wirklich
kratzt, oder??
Das kleine x schneidet genau einen Buchstaben aus, und zwar den, auf
dem gerade der Cursor steht, tut also dasselbe wie die Entfern-Taste. Warum also
den Befehl x (kleines x) verwenden?? Wir haben schon gesehen, was die Befehle w (kleines w), W
(grosses w), b, B, e und E bewirken. Was bewirkt nun die Eingabe von 3dfo im Eingabemodus?? Eine sehr beliebte preisfrage! Nun - die Eingabe von 3dfo im Eingabemodus bewirkt, dass Sie 3dfo in Ihren Text an der Cursorposition eintippen. Achten Sie also auch auf die Fragestellung! Mit dem Befehl dd löschen Sie die gesamte Cursorzeile! Mit dem Befehl 3dd löschen Sie drei Zeilen inklusive Cursorzeile! Rückgängig machenJetzt kann es vorkommen, dass man "Mist baut" - okay -
ich sollte nicht von mir auf andere schließen; es kann aber leicht passieren,
dass Sie etwas löschen, was nicht gelöscht hätte werden sollen!
Dafür gibt es die undo-Direktive! Im vim können die letzten Tausend (!) Aktionen rückgängig gemacht weden! Mit dem Befehl U (grosses u) werden alle Änderungen der Cursorzeile rückgängig gemacht. Wenn Sie vor lauter hin und her - Fehlern dort und da, gelöscht ja/nein? ...
Das geht mittels des last-line Befehls :q! Mit dem r-Befehl
können Sie sich das Zeichen unterm Cursor durch eines Ihrer Wahl ersetzen
lassen. Sie bleiben dabei im Befehlsmodus!!
So - genug - für "Erste Schritte" reicht das oberhalb gezeigte aus. Sie können mit diesem Wissen auch die Prüfungsfragen beantworten, indem Sie unterhalb jeder Frage im vorgesehenen Bereich Ihre Antworten hinschreiben - spätestens jetzt wird für Sie die Möglichkeit des Zwischensicherns sicher sehr von Interesse sein und im Gedächtnis haften bleiben. |



