forked from aniani/vim
854 lines
31 KiB
Plaintext
854 lines
31 KiB
Plaintext
===============================================================================
|
|
= W i l l k o m m e n z u m V I M T u t o r - Version 1.5D =
|
|
===============================================================================
|
|
|
|
Vim ist ein sehr mächtiger Editor, der viele Befehle bereitstellt; zu viele,
|
|
um alle in einem Tutor wie diesem zu erklären. Dieser Tutor ist so
|
|
gestaltet, um genug Befehle vorzustellen, so dass Du die Fähigkeit erlangst,
|
|
Vim mit Leichtigkeit als einen Allzweck-Editor zu benutzen.
|
|
|
|
Die Zeit für das Durcharbeiten dieses Tutors beträgt ca. 25-30 Minuten,
|
|
abhängig davon, wie viel Zeit Du mit Experimentieren verbringst.
|
|
Die in den Lektionen angewendeten Kommandos werden den Text modifizieren.
|
|
Erstelle eine Kopie dieser Datei, in der Du üben willst (falls Du
|
|
"vimtutor.bat" aufgerufen hast, ist dies bereits eine Kopie).
|
|
|
|
Es ist wichtig, sich zu vergegenwärtigen, dass dieser Tutor angelegt ist, um
|
|
über das Anwenden zu lehren. Das bedeutet, dass Du die Befehle ausführen
|
|
musst, um sie richtig zu lernen. Wenn Du nur den Text liest, vergisst Du die
|
|
Befehle!
|
|
|
|
Jetzt stelle sicher, dass Deine Umstelltaste NICHT gedrückt ist, und
|
|
betätige die j Taste genügend Male, um den Cursor nach unten zu bewegen,
|
|
so dass Lektion 1.1 den Bildschirm vollkommen ausfüllt.
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 1.1: BEWEGEN DES CURSORS
|
|
|
|
|
|
** Um den Cursor zu bewegen, drücke die h,j,k,l Tasten wie unten gezeigt. **
|
|
|
|
^ Hilfestellung:
|
|
k Die h Taste befindet sich links und bewegt nach links.
|
|
< h l > Die l Taste liegt rechts und bewegt nach rechts.
|
|
j Die j Taste ähnelt einem Pfeil nach unten.
|
|
v
|
|
1. Bewege den Cursor auf dem Bildschirm herum, bis Du Dich sicher fühlst.
|
|
|
|
2. Halte die Nach-Unten-Taste (j) gedrückt, bis sie sich wiederholt.
|
|
---> Jetzt weißt Du, wie Du Dich zur nächsten Lektion bewegen kannst.
|
|
|
|
3. Benutze die Nach-Unten-Taste, um Dich zu Lektion 1.2 zu bewegen.
|
|
|
|
Bemerkung: Immer, wenn Du Dir unsicher bist über das, was Du getippt hast,
|
|
drücke <ESC> , um Dich in den Normal-Modus zu begeben.
|
|
Dann gib das gewünschte Kommando noch einmal ein.
|
|
|
|
Bemerkung: Die Cursor-Tasten sollten ebenfalls funktionieren. Aber wenn Du
|
|
hjkl benutzt, wirst Du in der Lage sein, Dich sehr viel schneller
|
|
umherzubewegen, wenn Du Dich erst einmal daran gewöhnt hast.
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 1.2: STARTEN UND VERLASSEN VON VIM
|
|
|
|
|
|
!! ACHTUNG: Bevor Du einen der unten aufgeführten Schritte ausführst, lies
|
|
diese gesamte Lektion!!
|
|
|
|
1. Drücke die <ESC> Taste (um sicherzustellen, dass Du im Normal-Modus bist).
|
|
|
|
2. Tippe: :q! <ENTER>.
|
|
|
|
---> Dies beendet den Editor OHNE jedwelche Änderungen, die Du gemacht hast.
|
|
Wenn Du die Änderungen speichern und beenden willst, tippe:
|
|
:wq <ENTER>
|
|
|
|
3. Wenn Du die Eingabeaufforderung siehst, tippe das Kommando, das Dich zu
|
|
diesem Tutor geführt hat. Das könnte sein: vimtutor <ENTER>
|
|
Im Normalfall würdest Du eingeben Vim tutor <ENTER>
|
|
|
|
---> 'Vim' ist der Aufruf des Editors, 'tutor' ist die zu editierende Datei.
|
|
|
|
4. Wenn Du Dir diese Schritte eingeprägt hast und Du Dich sicher genug fühlst,
|
|
führe Schritte 1 bis 3 aus, um den Editor zu verlassen und wieder
|
|
hineinzugelangen. Dann bewege den Cursor nach unten zur Lektion 1.3.
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 1.3: TEXT EDITIEREN - LÖSCHEN
|
|
|
|
|
|
** Im Normal-Modus, drücke x um das Zeichen unter dem Cursor zu löschen. **
|
|
|
|
1. Bewege den Cursor zu der mit ---> markierten Zeile unten.
|
|
|
|
2. Um die Fehler zu beheben, bewege den Cursor, bis er auf dem Zeichen steht,
|
|
das gelöscht werden soll.
|
|
|
|
3. Drücke die x Taste, um das überflüssige Zeichen zu löschen.
|
|
|
|
4. Wiederhole die Schritte 2 bis 4, bis der Satz korrekt ist.
|
|
|
|
---> Die Kkuh sprangg übber deen Moond.
|
|
|
|
5. Wenn nun die Zeile korrekt ist, gehe weiter zur Lektion 1.4.
|
|
|
|
Anmerkung: Während Du durch diesen Tutor gehst, versuche nicht, auswendig zu
|
|
lernen, lerne vielmehr durch Anwenden.
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 1.4: TEXT EDITIEREN - EINFÜGEN
|
|
|
|
|
|
** Während Du im Normal-Modus bist, drücke i , um Text einzufügen. **
|
|
|
|
1.Bewege den Cursor zu der mit ---> markierten Zeile unten.
|
|
|
|
2. Um die erste Zeile mit der zweiten gleichzumachen, bewege den Cursor auf
|
|
das erste Zeichen NACH der Stelle, wo der Text eingefügt werden soll.
|
|
|
|
3. Drücke i und gib die notwendige Ergänzung ein.
|
|
|
|
4. Wenn jeweils ein Fehler beseitigt ist, drücke <ESC> , um zum Normal-Modus
|
|
zurückzukehren.
|
|
Wiederhole die Schritte 2 bis 4, um den Satz zu korrigieren.
|
|
|
|
---> In dieser ft etwas .
|
|
---> In dieser Zeile fehlt etwas Text.
|
|
|
|
5. Wenn Du Dich mit dem Einfügen von Text sicher fühlst, bewege den Cursor zur
|
|
untenstehenden Zusammenfassung.
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
ZUSAMMENFASSUNG VON LEKTION 1
|
|
|
|
|
|
1. Der Cursor wird bewegt, indem man entweder die Pfeiltasten oder die
|
|
hjkl Tasten benutzt.
|
|
h (links) j (unten) k (aufwärts) l (rechts)
|
|
|
|
2. Um Vim aufzurufen (vom % prompt) tippe: vim DATEINAME <ENTER>
|
|
|
|
3. Um Vim zu verlassen, tippe: <ESC> :q! <ENTER> ,
|
|
um alle Änderungen zu verwerfen.
|
|
ODER tippe: <ESC> :wq <ENTER> ,
|
|
um die Änderungen zu speichern.
|
|
|
|
4. Um ein Zeichen im Normal-Modus zu löschen, tippe: x
|
|
|
|
5. Um Text beim Cursor einzugeben, während Du im Normal-Modus bist, tippe:
|
|
i Text eingeben <ESC>
|
|
|
|
Bemerkung: Drücken von <ESC> bringt Dich in den Normal-Modus oder bricht ein
|
|
ungewolltes, erst teilweise eingegebenes Kommando ab.
|
|
|
|
Nun fahre mit Lektion 2 fort.
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 2.1: LÖSCHKOMMANDOS
|
|
|
|
|
|
** Tippe dw , um bis zum Ende des Wortes zu löschen **
|
|
|
|
1. Drücke <ESC> um sicherzustellen, dass Du im Normal-Modus bist.
|
|
|
|
2. Bewege den Cursor zu der mit ---> markierten Zeile unten.
|
|
|
|
3. Bewege den Cursor zum Anfang eines Wortes, das gelöscht werden soll.
|
|
|
|
4. Tippe dw , um das Wort zu entfernen.
|
|
|
|
Bemerkung: Die Buchstaben dw erscheinen auf der letzten Zeile des
|
|
Bildschirms, wenn Du sie eingibst. Wenn Du etwas falsch eingetippt hast,
|
|
drücke <ESC> und fahre fort.
|
|
|
|
---> Einige Wörter lustig gehören nicht Papier in diesen Satz.
|
|
|
|
5. Wiederhole die Schritte 3 und 4, bis der Satz korrekt ist und gehe
|
|
danach zur Lektion 2.2.
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 2.2: WEITERE LÖSCHKOMMANDOS
|
|
|
|
|
|
** Tippe d$ , um bis zum Ende der Zeile zu löschen. **
|
|
|
|
1. Drücke <ESC> ,um sicherzustellen, dass Du im Normal-Modus bist.
|
|
|
|
2. Bewege den Cursor zu der mit ---> markierten Zeile unten.
|
|
|
|
3. Bewege den Cursor zum Ende der korrekten Zeile (NACH dem ersten . ).
|
|
|
|
4. Tippe d$ ,um bis zum Ende der Zeile zu löschen.
|
|
|
|
---> Jemand hat das Ende der Zeile doppelt eingegeben. doppelt eingegeben.
|
|
|
|
|
|
5. Gehe weiter zur Lektion 2.3 , um zu verstehen, was hierbei passiert.
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 2.3: ÜBER KOMMANDOS UND OBJEKTE
|
|
|
|
|
|
Das Format für das Löschkommando d ist folgendermaßen:
|
|
|
|
[Nummer] d Objekt ODER d [Nummer] Objekt
|
|
|
|
Wobei:
|
|
Nummer - gibt an, wie viele Male das Kommando ausgeführt werden soll
|
|
(optional, standardmäßig 1).
|
|
d - ist das Löschkommando.
|
|
Objekt - bedeutet, worauf das Kommando angewendet wird (unten aufgeführt).
|
|
|
|
Eine kurze Liste von Objekten:
|
|
w - vom Cursor an bis zum Ende des Wortes, inklusive dem Leerzeichen.
|
|
e - vom Cursor an bis zum Ende des Wortes, OHNE das Leerzeichen.
|
|
$ - vom Cursor an bis zum Ende der Zeile.
|
|
|
|
Bemerkung: Für die Wagemutigen: die Eingabe lediglich des Objekt-Teils im
|
|
Normal-Modus ohne ein Kommando bewegt den Cursor so,
|
|
wie in der Objektliste angegeben ist.
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 2.4: EINE AUSNAHME ZU 'KOMMANDO-OBJEKT'
|
|
|
|
|
|
** Tippe dd , um eine ganze Zeile zu löschen. **
|
|
|
|
Wegen der Häufigkeit, dass man ganze Zeilen löscht, kamen die
|
|
Entwickler von Vim darauf, dass es leichter wäre, zwei d's hintereinander
|
|
einzugeben, um eine Zeile zu löschen.
|
|
|
|
1. Bewege den Cursor zur zweiten Zeile in der unten stehenden Redewendung.
|
|
2. Tippe dd , um die Zeile zu löschen.
|
|
3. Nun bewege Dich zur vierten Zeile.
|
|
4. Tippe 2dd (erinnere Dich an Nummer-Kommando-Objekt),
|
|
um die überflüssigen Zeilen zu löschen.
|
|
|
|
1) Rosen sind rot,
|
|
2) Matsch ist lustig,
|
|
3) Veilchen sind blau,
|
|
4) Ich habe ein Auto,
|
|
5) Die Uhr sagt die Zeit,
|
|
6) Zucker ist süß,
|
|
7) So wie Du auch.
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 2.5: RÜCKGÄNGIG MACHEN (UNDO)
|
|
|
|
|
|
** Tippe u , um die letzten Kommandos rückgängig zu machen **
|
|
** oder U um eine ganze Zeile wiederherzustellen. **
|
|
|
|
1. Bewege den Cursor zu der mit ---> markierten Zeile unten
|
|
und setze ihn auf den ersten Fehler.
|
|
2. Tippe x , um das erste überflüssige Zeichen zu löschen.
|
|
3. Nun tippe u um das soeben ausgeführte Kommando rückgängig zu machen.
|
|
4. Dieses Mal behebe alle Fehler auf der Zeile, indem Du das x Kommando
|
|
anwendest.
|
|
5. Nun tippe ein großes U , um die Zeile in ihren Ursprungszustand
|
|
wiederherzustellen.
|
|
6. Nun tippe u mehrere Male, um das U und die vorhergehenden Kommandos
|
|
rückgängig zu machen.
|
|
7. Nun tippe CTRL-R (halte die CTRL-Taste gedrückt und drücke R )
|
|
mehrere Male, um die Kommandos rückgängig zu machen
|
|
(die Rückgängigmachungen rückgängig machen).
|
|
|
|
---> Beehebe die Fehller diesser Zeile und sttelle sie mitt 'undo' wieder her.
|
|
|
|
8. Dieses sind sehr nützliche Kommandos.
|
|
Nun gehe weiter zur Zusammenfassung von Lektion 2.
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
ZUSAMMENFASSUNG VON LEKTION 2
|
|
|
|
|
|
1. Um vom Cursor bis zum Ende eines Wortes zu löschen, tippe: dw
|
|
|
|
2. Um vom Cursor bis zum Ende einer Zeile zu löschen, tippe: d$
|
|
|
|
3. Um eine ganze Zeile zu löschen, tippe: dd
|
|
|
|
4. Das Format für ein Kommandos im Normal-Modus ist:
|
|
|
|
[Nummer] Kommando Objekt ODER Kommando [Nummer] Objekt
|
|
wobei:
|
|
Nummer - gibt an, wie oft das Kommando wiederholt wird
|
|
Kommando - gibt an, was getan werden soll, zum Beispiel d für delete
|
|
Objekt - gibt an, worauf das Kommando angewendet werden soll,
|
|
zum Beispiel w (Wort), $ (zum Ende der Zeile), etc.
|
|
|
|
5. Um vorherige Aktionen rückgängig zu machen, tippe: u (kleines u)
|
|
Um alle Änderungen auf einer Zeile rückgängig zu machen: U (großes U)
|
|
Um die Rückgängigmachungen rückgängig zu machen, tippe: CTRL-R
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 3.1: ANFÜGEN (PUT)
|
|
|
|
|
|
** Tippe p , um das zuletzt Gelöschte nach dem Cursor anzufügen. **
|
|
|
|
1. Bewege den Cursor zur ersten Zeile des unten stehenden Sinnspruchs.
|
|
|
|
2. Tippe dd , um die Zeile zu löschen und sie in Vims Puffer zu speichern.
|
|
|
|
3. Bewege den Cursor zur Zeile ÜBER derjenigen,
|
|
wo die gelöschte Zeile platziert werden soll.
|
|
|
|
4. Im Normal-Modus, tippe p , um die Zeile zu platzieren.
|
|
|
|
5. Wiederhole die Schritte 2 bis 4, um alle Zeilen in die richtige Reihenfolge
|
|
zu bringen.
|
|
|
|
d) Kannst Du das auch?
|
|
b) Veilchen sind blau,
|
|
c) Intelligenz ist erlernbar,
|
|
a) Rosen sind rot,
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 3.2: ERSETZEN (REPLACE)
|
|
|
|
|
|
** Tippe r und ein Zeichen, um das Zeichen unter dem Cursor zu ersetzen. **
|
|
|
|
1. Bewege den Cursor zur ersten unten stehenden, mit ---> markierten Zeile.
|
|
|
|
2. Bewege den Cursor, bis er sich auf dem ersten Fehler befindet.
|
|
|
|
3. Tippe r und anschließend das Zeichen, welches den Fehler beheben sollte.
|
|
|
|
4. Wiederhole die Schritte 2 und 3, bis die erste Zeile korrekt ist.
|
|
|
|
---> Als diese Zeite eingegoben wurde, wurden einike falsche Tasten gelippt.
|
|
---> Als diese Zeile eingegeben wurde, wurden einige falsche Tasten getippt.
|
|
|
|
5. Nun fahre fort mit Lektion 3.2.
|
|
|
|
Bemerkung: Erinnere Dich, dass Du durch Anwenden lernen solltest, nicht durch
|
|
Auswendiglernen.
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 3.3: ÄNDERN (CHANGE)
|
|
|
|
|
|
** Um ein Wortteil oder ein ganzes Wort zu ändern, tippe cw . **
|
|
|
|
1. Bewege den Cursor zur ersten unten stehenden, mit ---> markierten Zeile.
|
|
|
|
2. Platziere den Cursor auf das s von Wstwr.
|
|
|
|
3. Tippe cw und die Wortkorrektur ein (in diesem Fall, tippe 'örter'.)
|
|
|
|
4. Drücke <ESC> und bewege den Cursor zum nächsten Fehler
|
|
(Das erste zu ändernde Zeichen.)
|
|
|
|
5. Wiederhole Schritte 3 und 4 bis der erste Satz gleich dem zweiten ist.
|
|
|
|
---> Einige Wstwr dieser Zlaww lasdjlaf mit dem Ändern-Kommando gaaauu werden.
|
|
---> Einige Wörter dieser Zeile sollen mit dem Ändern-Kommando geändert werden.
|
|
|
|
Bemerke, dass cw nicht nur das Wort ersetzt, sondern Dich außerdem in den
|
|
Eingabemodus versetzt.
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 3.4: MEHR ÄNDERUNGEN MITTELS c
|
|
|
|
|
|
** Das change-Kommando arbeitet mit denselben Objekten wie delete **
|
|
|
|
1. Das change Kommando arbeitet in gleicher Weise wie delete. Das Format ist:
|
|
|
|
[Nummer] c Objekt ODER c [Nummer] Objekt
|
|
|
|
2. Auch sind die Objekte gleich, so wie w (Wort), $ (Ende der Zeile), etc.
|
|
|
|
3. Bewege den Cursor zur ersten unten stehenden, mit ---> markierten Zeile.
|
|
|
|
4. Bewege den Cursor zum ersten Unterschied zur anderen Zeile.
|
|
|
|
5. Tippe c$ , um den Rest der Zeile an die zweite anzugleichen
|
|
und drücke abschließend <ESC> .
|
|
|
|
---> Das Ende dieser Zeile sollte an die zweite Zeile angeglichen werden.
|
|
---> Das Ende dieser Zeile sollte mit dem 'c$' Kommando korrigiert werden.
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
ZUSAMMENFASSUNG VON LEKTION 3
|
|
|
|
|
|
1. Um einen vorher gelöschten Text anzufügen, tippe p . Dies fügt den
|
|
gelöschten Text NACH dem Cursor an (wenn es sich um eine ganze Zeile
|
|
handelt, wird ab der Zeile unter dem Cursor eingefügt).
|
|
|
|
2. Um das Zeichen unter dem Cursor zu ersetzen, tippe r ; das danach
|
|
eingegebene Zeichen ersetzt das Original.
|
|
|
|
3. Das Änderungs- (change) Kommando erlaubt, das angegebene Objekt vom Cursor
|
|
bis zum Ende des Objektes zu ändern. Tippe z.B. cw , um eine Änderung vom
|
|
Cursor bis zum Ende des Wortes vorzunehmen; c$ bis zum Ende der Zeile.
|
|
|
|
4. Das Format für change ist:
|
|
|
|
[Nummer] c Objekt ODER c [Nummer] Objekt
|
|
|
|
Nun fahre mit der nächsten Lektion fort.
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 4.1: DATEIPOSITION UND DATEISTATUS
|
|
|
|
|
|
** Tippe CTRL-g , um Deine Dateiposition sowie den Dateistatus anzuzeigen. **
|
|
** Tippe SHIFT-G , um Dich zu einer Zeile in der Datei zu bewegen. **
|
|
|
|
Bemerkung: Lies diese gesamte Lektion, bevor Du irgendeinen Schritt ausführst!!
|
|
|
|
1. Halte die Ctrl Taste unten und drücke g . Eine Statuszeile erscheint in
|
|
der untersten Zeile des Fensters mit dem Dateinamen und der Zeile,
|
|
auf der Du Dich befindest. Präge Dir die Zeilennummer für Schritt 3 ein.
|
|
|
|
2. Drücke Shift-G , um Dich zum Ende der Datei zu begeben.
|
|
|
|
3. Gib die Nummer der Zeile ein, auf der Du vorher warst, gefolgt von Shift-G.
|
|
Dieses bringt Dich zurück zu der Zeile, auf der Du gestanden hast, als Du
|
|
das erste Mal Ctrl-g gedrückt hast.
|
|
(Wenn Du die Ziffern eingibst, werden sie NICHT auf dem Schirm angezeigt.)
|
|
|
|
4. Wenn Du sicher genug fühlst, führe die Schritte 1 bis 3 aus.
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 4.2: DAS SUCHEN - KOMMANDO
|
|
|
|
|
|
** Tippe / gefolgt von einem Ausdruck, um nach dem Ausdruck zu suchen. **
|
|
|
|
1. Wenn Du im Normal-Modus bist, tippe das / Zeichen. Beachte, dass das /
|
|
und der Cursor auf der untersten Zeile des Schirms erscheinen,
|
|
so wie beim : Kommando.
|
|
|
|
2. Nun tippe 'Fehhler' <ENTER>. Dies ist das Wort, nach dem Du suchen willst.
|
|
|
|
3. Um nach demselben Ausdruck weiterzusuchen, tippe einfach n (für *n*ext).
|
|
Um nach demselben Ausdruck in der anderen Richtung zu suchen, Shift-N .
|
|
|
|
4. Wenn Du nach einem Ausdruck rückwärts in der Datei suchen willst,
|
|
benutze das Kommando ? statt / .
|
|
|
|
---> Wenn die Suche das Dateiende erreicht hat, wird sie am Anfang fortgesetzt.
|
|
|
|
Fehler schreibt sich nicht "Fehhler"; "Fehhler" ist ein Fehler
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 4.3: PASSENDE KLAMMERN FINDEN
|
|
|
|
|
|
** Tippe % , um eine korrespondierende Klammer ),], oder } zu finden. **
|
|
|
|
1. Platziere den Cursor auf irgendeinem der Zeichen (, [, oder {
|
|
in der unten stehenden Zeile, die mit ---> markiert ist.
|
|
|
|
2. Nun tippe das % Zeichen.
|
|
|
|
3. Der Cursor sollte sich nun auf der gegenüberliegenden Klammer befinden.
|
|
|
|
4. Tippe % , um den Cursor zurück auf die erste Gegenklammer zurückzubewegen.
|
|
|
|
---> Dies ( ist eine Testzeile mit ( verschiedenen [ Klammern ] { xx } darin. ))
|
|
|
|
Bemerkung: Diese Funktionalität ist sehr nützlich bei der Fehlersuche in einem
|
|
Programmtext, in dem eine passende Klammer fehlt!
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 4.4: WEGE, UM FEHLER ZU BEHEBEN
|
|
|
|
|
|
** Tippe :s/alt/neu/g , um 'alt' durch 'neu' zu ersetzen. **
|
|
|
|
1. Bewege den Cursor zu der unten stehenden mit ---> markierten Zeile.
|
|
|
|
2. Tippe :s/diee/die <ENTER> . Bemerke, dass der Befehl nur das erste
|
|
Vorkommen auf der Zeile ersetzt.
|
|
|
|
3. Nun tippe :s/diee/die/g , welches bedeutet, eine zeilenweite
|
|
(*g*lobale) Ersetzung vorzunehmen.
|
|
Dies ersetzt alle Vorkommen auf der Zeile.
|
|
|
|
---> diee schönste Zeit, um diee Blumen anzuschauen, ist diee Frühlingszeit.
|
|
|
|
4. Um alle Vorkommen einer Zeichenkette zwischen zwei Zeilen zu ändern,
|
|
tippe :#,#s/alt/neu/g , wobei #,# die zwei Nummern der Zeilen sind.
|
|
Tippe :%s/alt/neu/g , um alle Vorkommen in der gesamten Datei zu ändern.
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
ZUSAMMENFASSUNG VON LEKTION 4
|
|
|
|
|
|
1. Ctrl-g zeigt die aktuelle Dateiposition sowie den Dateistatus.
|
|
Shift-G bringt Dich bis zum Ende der Datei. Eine Zeilennummer
|
|
gefolgt von Shift-G bewegt den Cursor zu der Zeilennummer.
|
|
|
|
2. Die Eingabe von / gefolgt von einem Ausdruck sucht VORWÄRTS nach dem
|
|
Ausdruck.
|
|
Die Eingabe von ? gefolgt von einem Ausdruck sucht RÜCKWÄRTS nach dem
|
|
Ausdruck.
|
|
Tippe nach einer Suche n , um das nächste Vorkommen in der gleichen
|
|
Richtung zu finden; oder Shift-N , um in der entgegengesetzten Richtung
|
|
zu suchen.
|
|
|
|
3. Die Eingabe von % , wenn der Cursor sich auf (,),[,],{, oder }
|
|
befindet, findet die korrespondierende Gegenklammer.
|
|
|
|
4. Um das ERSTE Vorkommen von alt in eine Zeile durch neu zu ersetzen, tippe
|
|
:s/alt/neu
|
|
Um ALLE Vorkommen von alt in eine Zeile durch neu zu ersetzen, tippe
|
|
:s/alt/neu/g
|
|
Um Ausdrücke innerhalb von zwei Zeilen zu ersetzen, tippe
|
|
:#,#s/alt/neu/g
|
|
Um alle Vorkommen in der ganzen Datei zu ersetzen, tippe
|
|
:%s/alt/neu/g
|
|
Um jedes Mal nach einer Bestätigung gefragt zu werden, füge 'c' hinzu.
|
|
:%s/alt/neu/gc (*c*onfirm)
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 5.1: AUSFÜHREN EINES EXTERNEN KOMMANDOS
|
|
|
|
|
|
** Gib :! , gefolgt von einem externen Kommando ein, um es auszuführen. **
|
|
|
|
1. Tippe das vertraute Kommando : , um den Cursor auf die unterste Zeile
|
|
des Fensters zu setzen. Dies erlaubt Dir, ein Kommando einzugeben.
|
|
|
|
2. Nun tippe ein ! (Ausrufezeichen). Dieses ermöglicht Dir, ein
|
|
beliebiges, externes Shellkommando auszuführen.
|
|
|
|
3. Als Beispiel tippe ls nach dem ! und drücke <ENTER>. Dies zeigt
|
|
eine Auflistung Deines Verzeichnisses; genauso, als wenn Du auf der
|
|
Eingabeaufforderung wärst.
|
|
Verwende :!dir , falls ls nicht funktioniert.
|
|
|
|
---> Bemerkung: Mit dieser Methode kann jedes beliebige externe Kommando
|
|
ausgeführt werden.
|
|
|
|
---> Bemerkung: Alle : Kommandos müssen durch Eingabe von <ENTER>
|
|
abgeschlossen werden.
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 5.2: MEHR ÜBER DAS SCHREIBEN VON DATEIEN
|
|
|
|
|
|
** Um an der Datei durchgeführte Änderungen zu sichern , tippe :w DATEINAME. **
|
|
|
|
1. Tippe :!ls oder :!dir , um eine Auflistung Deines Verzeichnisses
|
|
zu erhalten.
|
|
Du weißt nun bereits, dass Du danach <ENTER> eingeben musst.
|
|
|
|
2. Wähle einen Dateinamen, der dort noch nicht existiert, z.B. TEST.
|
|
|
|
3. Nun tippe: :w TEST (wobei TEST der gewählte Dateiname ist.)
|
|
|
|
4. Dieses speichert diese ganze Datei (Vim Tutor) unter dem Namen TEST.
|
|
Um dieses zu überprüfen, tippe nochmals :!ls bzw. !dir,
|
|
um Deinen Verzeichnisinhalt zu sehen.
|
|
|
|
---> Beachte: würdest Du Vim jetzt beenden und danach wieder mit dem Dateinamen
|
|
TEST öffnen, dann wäre diese Datei eine exakte Kopie des Tutors zu dem
|
|
Zeitpunkt, als Du ihn gespeichert hast.
|
|
|
|
5. Nun entferne die Datei durch Eingabe von :!rm TEST bzw. :!del TEST.
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 5.3: SELEKTIVES SCHREIBEN VON DATEIEN
|
|
|
|
|
|
** Um einen Abschnitt der Datei zu speichern tippe :#,# w DATEINAME **
|
|
|
|
1. Gib nochmals :!ls bzw :!dir ein, um eine Auflistung Deines
|
|
Verzeichnisses zu erhalten und wähle einen geeigneten Dateinamen wie TEST.
|
|
|
|
2. Bewege den Cursor zum Anfang dieses Kapitels und tippe Ctrl-g , um die
|
|
Nummer dieser Zeile zu erhalten. PRÄGE DIR DIESE NUMMER EIN!
|
|
|
|
3. Nun bewege Dich zum Ende dieses Kapitels und tippe wieder Ctrl-g .
|
|
PRÄGE DIR AUCH DIESE ZEILENNUMMER EIN!
|
|
|
|
4. Um NUR einen Abschnitt einer Datei zu speichern, tippe :#,# w TEST
|
|
wobei #,# die zwei Nummern sind, die Du im Gedächtnis hast (oben, unten);
|
|
und TEST Dein Dateiname ist.
|
|
|
|
5. Überprüfe wiederum mit :!ls oder :!dir nach, dass die Datei
|
|
existiert, aber lösche sie NICHT.
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 5.4: EINLESEN UND ZUSAMMENFÜHREN VON DATEIEN
|
|
|
|
|
|
** Um den Inhalt einer Datei einzulesen, tippe :r DATEINAME **
|
|
|
|
1. Tippe :!ls bzw. !dir , um sicherzustellen, dass Deine Datei TEST
|
|
von vorhin vorhanden ist.
|
|
|
|
2. Platziere den Cursor auf der ersten Zeile dieses Kapitels.
|
|
|
|
BEACHTE: Nachdem Du Schritt 3 ausgeführt hast, wirst Du Lektion 5.3 sehen.
|
|
An diesem Punkt bewege Dich wieder ABWÄRTS zu dieser Lektion.
|
|
|
|
3. Nun lies Deine Datei TEST ein indem Du das Kommando :r TEST ausführst,
|
|
wobei TEST der Name der Datei ist.
|
|
|
|
BEMERKUNG: Die Datei, die Du einliest, wird an der Stelle eingefügt, an der
|
|
sich der Cursor befindet.
|
|
|
|
4. Um zu überprüfen, dass eine Datei eingelesen wurde, gehe zurück und
|
|
sehe, dass es jetzt zwei Kopien von Lektion 5.3 gibt, das Original und die
|
|
eingefügte Version.
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
ZUSAMMENFASSUNG VON Lektion 5
|
|
|
|
|
|
1. :!Kommando führt ein externes (Shell-)Kommando aus.
|
|
|
|
Einige nützliche Beispiele sind
|
|
UNIX:
|
|
:!ls - Auflistung des aktuellen Verzeichnisses
|
|
:!rm DATEINAME - entfernt Datei DATEINAME
|
|
MS-DOS/Windows:
|
|
:!dir - Auflistung des aktuellen Verzeichnisses
|
|
:!del DATEINAME - entfernt Datei DATEINAME
|
|
|
|
2. :w DATEINAME schreibt die aktuelle Vim-Datei als DATEINAME auf die
|
|
Platte.
|
|
|
|
3. :#,#w DATEINAME speichert die Zeilen # bis # in der Datei DATEINAME.
|
|
|
|
4. :r DATEINAME lädt die Datei DATEINAME von der Platte und fügt sie in
|
|
die aktuelle Datei nach der Cursorposition ein.
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 6.1: ZEILEN ÖFFNEN (OPEN)
|
|
|
|
|
|
** Tippe o , um eine Zeile unter dem Cursor zu öffnen und Dich in den **
|
|
** Einfügemodus zu begeben. **
|
|
|
|
1. Bewege den Cursor zu der unten stehenden Zeile, die mit ---> markiert ist.
|
|
|
|
2. Tippe o (klein geschrieben), um eine Zeile UNTER dem Cursor aufzumachen
|
|
und Dich in den Einfügemodus zu begeben.
|
|
|
|
3. Nun tippe den Text der mit ---> markierte Zeile ab und drücke <ESC> , um
|
|
den Einfügemodus zu verlassen.
|
|
|
|
---> Mit o wird der Cursor auf der geöffneten Zeile im Eingabemodus platziert.
|
|
|
|
4. Um eine Zeile ÜBER dem Cursor aufzumachen, gib einfach ein großes O
|
|
anstelle eines kleinen o ein. Versuche dies auf der unten stehenden
|
|
Zeile.
|
|
Öffne eine Zeile über dieser mit Shift-O , wenn der Cursor auf dieser Zeile ist.
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 6.2: TEXT ANFÜGEN (APPEND)
|
|
|
|
|
|
** Tippe a , um Text NACH dem Cursor einzufügen. **
|
|
|
|
1. Bewege den Cursor zum Ende der unten stehenden Zeile, die mit --->
|
|
markiert ist, indem Du im Normal-Modus $ eingibst.
|
|
|
|
2. Tippe ein a (klein geschrieben), um Text NACH dem Zeichen unter dem
|
|
Cursor einzugeben. (Ein großes A fügt nach dem Ende der Zeile an.)
|
|
|
|
Bemerkung: Dies macht es überflüssig, erst i zu tippen, dann das letzte
|
|
Zeichen, den anzuhängenden Text, <ESC>, Cursor-Rechts,
|
|
und schließlich, x, nur um Text an eine Zeile anzuhängen!
|
|
|
|
3. Nun vervollständige die erste Zeile. Beachte außerdem , dass Anfügen
|
|
(Append) genau das gleiche ist, wie der Einfüge- (Insert-) Modus,
|
|
abgesehen von der Stelle, an dem der Text eingefügt wird.
|
|
|
|
---> Diese Zeile bietet Gelegenheit
|
|
---> Diese Zeile bietet Gelegenheit, Text an ihr Ende anzufügen.
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 6.3: EINE ANDERE VERSION DES ERSETZENS (REPLACE)
|
|
|
|
|
|
** Tippe ein großes R , um mehr als ein Zeichen zu ersetzen. **
|
|
|
|
1. Bewege den Cursor zur ersten unten stehenden, mit ---> markierten Zeile.
|
|
|
|
2. Platziere den Cursor auf den Anfang des ersten Wortes, welches sich von
|
|
der zweiten mit ---> markierten Zeile unterscheidet (das Wort 'benutze').
|
|
|
|
3. Nun gib ein R ein, und ersetze den Rest des Textes auf der ersten
|
|
Zeile, um diese gleich der zweiten zu machen, indem Du den alten Text
|
|
überschreibst.
|
|
|
|
---> Um die erste Zeile gleich der zweiten zu machen, benutze die Tastatur.
|
|
---> Um die erste Zeile gleich der zweiten zu machen, tippe R und neuen Text.
|
|
|
|
4. Beachte, dass, wenn Du zum Verlassen <ESC> drückst, sämtlicher
|
|
ungeänderte Text bestehen bleibt.
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 6.4: OPTIONEN SETZEN
|
|
|
|
|
|
** Setze eine Option so, dass eine Suche oder eine Ersetzung Groß- **
|
|
** und Kleinschreibung ignoriert **
|
|
|
|
|
|
1. Suche nach 'igno', indem Du /igno eingibst.
|
|
Wiederhole die Suche einige Male, indem Du die n - Taste drückst.
|
|
|
|
2. Setze die 'ic' (ignorecase; Ignoriere Groß-/Kleinschreibung) - Option,
|
|
indem Du :set ic eingibst.
|
|
|
|
3. Nun suche wieder nach 'igno', indem Du n tippst.
|
|
Wiederhole dieses noch einige Male, indem Du die n Taste drückst.
|
|
|
|
4. Setze die 'hlsearch' (Suche hervorheben) und 'incsearch' (Inkrementelle
|
|
Suche) - Optionen:
|
|
:set hls is
|
|
|
|
5. Jetzt gib den Suchen-Befehl noch einmal ein und beobachte, was passiert:
|
|
/igno
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
ZUSAMMENFASSUNG VON Lektion 6
|
|
|
|
|
|
1. Die Eingabe von o macht eine Zeile UNTER dem Cursor auf und
|
|
platziert den Cursor auf der geöffneten Zeile im Einfügemodus.
|
|
Die Eingabe eines großen O öffnet eine Zeile ÜBER derjenigen,
|
|
auf der sich der Cursor befindet.
|
|
|
|
2. Gib ein a ein, um Text NACH dem Zeichen, auf dem sich der Cursor
|
|
befindet, einzufügen.
|
|
Die Eingabe eines großen A erlaubt das Anfügen von Text nach dem
|
|
Ende der Zeile.
|
|
|
|
3. Die Eingabe eines großen R wechselt in den Ersetzungs-(Replace)-Modus,
|
|
bis zum Verlassen <ESC> eingegeben wird.
|
|
|
|
4. Die Eingabe von ":set xxx" setzt die Option "xxx"
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 7 : DIE ONLINE-HILFE
|
|
|
|
** Nutze das eingebaute Hilfesystem **
|
|
|
|
Vim besitzt ein umfassendes eingebautes Hilfesystem. Für den Anfang probiere
|
|
eins der drei folgenden Dinge aus:
|
|
- Drücke die <Hilfe> - Taste (falls Du eine besitzt)
|
|
- Drücke die <F1> Taste (falls Du eine besitzt)
|
|
- Tippe :help <ENTER>
|
|
|
|
Tippe :q <ENTER> , um das Hilfefenster zu schließen.
|
|
|
|
Du kannst Hilfe über praktisch jedes Thema finden, indem Du dem ":help"
|
|
Kommando ein Argument gibst. Probiere folgendes (<ENTER> nicht vergessen):
|
|
|
|
:help w
|
|
:help c_<T
|
|
:help insert-index
|
|
:help user-manual
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Lektion 8: ERSTELLE EIN START-SKRIPT
|
|
|
|
** Aktiviere die Funktionalitäten von Vim **
|
|
|
|
Vim besitzt viele Funktionalitäten, die über Vi hinausgehen, aber die meisten
|
|
von ihnen sind standardmäßig deaktiviert.
|
|
Um diese zu aktivieren, musst Du eine "vimrc" - Datei erstellen.
|
|
|
|
1. Starte das Editieren der "vimrc"-Datei, dies ist von Deinem System abhängig:
|
|
:edit ~/.vimrc für Unix
|
|
:edit $VIM/_vimrc für MS-Windows
|
|
|
|
2. Nun lies die Beispiel - "vimrc" ein:
|
|
|
|
:read $VIMRUNTIME/vimrc_example.vim
|
|
|
|
3. Speichere die Datei mit:
|
|
|
|
:write
|
|
|
|
Das nächste Mal, wenn Du Vim startest, wird die Syntax-Hervorhebung
|
|
aktiviert sein.
|
|
Du kannst all Deine Lieblingsoptionen zu dieser "vimrc" - Datei zufügen.
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Damit ist der Vim Tutor beendet. Die Intention war, einen kurzen und
|
|
bündigen Überblick über den Vim Editor zu liefern; gerade genug, um relativ
|
|
leicht mit ihm umgehen zu können.
|
|
Der Vim Tutor hat nicht den geringsten Anspruch auf Vollständigkeit;
|
|
Vim hat noch weitaus mehr Kommandos.
|
|
Wage Dich als nächstes an das User Manual: ":help user-manual".
|
|
|
|
Für weiteres Lesen und Lernen kann folgendes Buch empfohlen werden:
|
|
Vim - Vi Improved - von Steve Oualline
|
|
Verlag: New Riders
|
|
Das erste Buch, das durchgängig Vim gewidmet ist. Besonders nützlich
|
|
für Anfänger.
|
|
Viele Beispiele und Bilder sind enthalten.
|
|
Siehe http://www.iccf.nl/click5.html
|
|
|
|
Als aktuelle Referenz f�r Version 6.2 und knappe Einf�hrung dient das
|
|
folgende Buch:
|
|
vim ge-packt von Reinhard Wobst
|
|
mitp-Verlag, ISBN 3-8266-1425-9
|
|
Trotz der kompakten Darstellung ist es durch viele n�tzliche Beispiele auch
|
|
f�r Einsteiger empfehlenswert. Probekapitel und die Beispielskripte sind
|
|
online erh�ltlich. Siehe http://www.iccf.nl/click5.html
|
|
|
|
Folgendes Buch ist älter und mehr über Vi als Vim, aber auch empfehlenswert:
|
|
Linda Lamb und Arnold Robbins
|
|
Textbearbeitung mit dem vi-Editor
|
|
Verlag O'Reilly - ISBN: 3897211262
|
|
In diesem Buch kann man fast alles finden, was man mit Vi tun möchte.
|
|
Die sechste Ausgabe enthält auch Informationen über Vim.
|
|
|
|
Dieses Tutorial wurde geschrieben von Michael C. Pierce and Robert K. Ware,
|
|
Colorado School of Mines. Es benutzt Ideen, die Charles Smith,
|
|
Colorado State University, zur Verfügung stellte.
|
|
E-mail: bware@mines.colorado.edu.
|
|
|
|
Bearbeitet für Vim von Bram Moolenaar.
|
|
|
|
Deutsche Übersetzung von Joachim Hofmann, September 2002.
|
|
E-mail: Joachim.Hof@gmx.de
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|