\documentclass[a4paper,12pt]{article} \usepackage[T1]{fontenc} \usepackage[latin1]{inputenc} \usepackage[german]{babel} \usepackage{schulung,xspace} \ifpdfoutput \usepackage[backref,colorlinks,bookmarks]{hyperref} \usepackage{thumbpdf,ae} \pdfinfo{ /Title (vi-Schulung) /Author (Lutz Donnerhacke) /Subject (vi) /Keywords (vi, editor) } \fi \newcommand{\vi} {\befehl{vi}} \newcommand{\ed} {\befehl{ed}} \newcommand{\test} {(\emph{Ausprobieren!})} \begin{filecontents*}{demo.txt} vi steht für Visual Editor und ist der Wysiwyg Zusatz für den Editor ed. Im Ernst: Zu Beginn der Rechentechnik arbeitete man mit Fernschreibern, an denen man eine Zeile eintippen oder ausgeben konnte. Wollte man eine Datei bearbeiten, so hat man sich die interessante Zeile ausgeben lassen und dann diese gelöscht oder eine neue Zeile eingefügt. Man konnte auch sagen, "Ersetze mir das Wort bla durch blubber". Man musste natürlich zwischen der Eingabe von neuem Text und der Eingabe von Kommandos beim ed unterscheiden. Nicht sehr komfortabel, oder? \end{filecontents*} \begin{document} \title{\vi\ -- Navigieren \& Bearbeiten} \author{\texttt{Lutz.Donnerhacke@Jena.Thur.De}} \date{3. Februar 2000} \maketitle \begin{abstract} \noindent Schulungsunterlage für Einsteigerkurse \rede{\vi} im Internetraum des Jugendzentrums Trend in Jena durchgeführt vom Thüringen Netz e.V. mit freundlicher Unterstützung des Jugendzentrums Trend, der Stadt Jena und vieler fleißiger Helfer. \noindent Dieser Kurs dient dazu, den Editor \vi\ soweit kennenzulernen, dass man damit Texte ansehen und bearbeiten kann. \end{abstract} \section{Worum geht's?} Um Texte zu erfassen und zu bearbeiten, ja selbst im Texte nur anzusehen, verwendet man einen \fachwort{Editor}{Anwendung, die Texte aus dem Dateisystem laden, anzeigen und modifizieren kann.}. \vi\ steht für \emph{Visual Editor} und ist der \fachwort{Wysiwyg}{Was Du siehst, ist auch das, was hinten rauskommt.} Zusatz für den Editor \ed. Im Ernst: Zu Beginn der Rechentechnik arbeitete man mit Fernschreibern, an denen man eine Zeile eintippen oder ausgeben konnte. Wollte man eine Datei bearbeiten, so hat man sich die interessante Zeile ausgeben lassen und dann diese gelöscht oder eine neue Zeile eingefügt. Man konnte auch sagen, \rede{Ersetze mir das Wort \emph{bla} durch \emph{blubber}}. Man musste natürlich zwischen der Eingabe von neuem Text und der Eingabe von Kommandos beim \ed\ unterscheiden. Nicht sehr komfortabel, oder? \vi\ gestattet es, einen bestimmten Ausschnitt der zu bearbeitenden Datei auf dem Bildschirm anzuzeigen und dort mit einem \fachwort{Cursor}{Eine Marke, die die Position angibt.} sich an die Stelle zu begeben, die man bearbeiten will. Hat man diese Position erreicht, so kann man den dort stehenden Text löschen, überschreiben oder neuen Text einfügen. Dabei ist es auch möglich, gelöschten Text an anderer Stelle neu einzufügen. Das funktioniert über eine \fachwort{Zwischenablage}{Eine Art Kurzzeitgedächtnis des Editors.}. Abschließend kann man natürlich auch den geänderten Text abspeichern oder die Änderungen verwerfen. \aufgabe{Wie wird der Cursor auf den ersten Terminals ausgesehen haben?}{Der Druckkopf des Fernschreibers \mbox{--}~selbst nur eine elektrische Schreibmaschine~-- hatte oben eine Markierung, die auf die nächste druckbare Position zeigte. Jedes Zeichen wurde sofort gedruckt.} \section{Navigieren} Zum Üben starten Sie erstmal den \vi\ mit \kommando{vi}{demo.txt}. Die Datei \argument{demo.txt} wurde vom Übungsleiter bereitgestellt. Es erscheint ein Bildschirm wie in \figurename~\ref{fig:start}. Der Cursor steht dabei auf dem ersten Buchstaben, dem \verb|v|. \begin{figure}[htbp] \begin{center} \scriptsize \fbox{\vbox{ \hbox{\texttt{\underline{v}i steht für Visual Editor und ist der Wysiwyg Zusatz für den Editor ed.}} \hbox{} \hbox{\texttt{Im Ernst: Zu Beginn der Rechentechnik arbeitete man mit Fernschreibern, an}} \hbox{\texttt{denen man eine Zeile eintippen oder ausgeben konnte. Wollte man eine Datei}} \hbox{\texttt{bearbeiten, so hat man sich die interessante Zeile ausgeben lassen und dann}} \hbox{\texttt{diese gelöscht oder eine neue Zeile eingefügt. Man konnte auch sagen,}} \hbox{\texttt{"{}Ersetze mir das Wort bla durch blubber"{}. Man musste natürlich zwischen der}} \hbox{\texttt{Eingabe von neuem Text und der Eingabe von Kommandos beim ed unterscheiden.}} \hbox{\texttt{Nicht sehr komfortabel, oder?}} \hbox{\texttt{\textasciitilde}} \hbox{\texttt{\textasciitilde}} \hbox{\texttt{"{}demo.txt"{} 9 lines, 552 chars}}}} \end{center} \caption{Startbildschirm} \label{fig:start} \end{figure} Die Cursortasten sind eine neumodische Erfindung. Alles was man als wirklich immer existierend voraussetzen kann, sind die Ziffern und Buchstaben auf der Tastatur. Demzufolge navigiert man innerhalb von \vi\ meistens mit den Tasten \T H, \T J, \T K und \T L. Tippen Sie einfach einige Male \T L für die Bewegung nach links, \T H für die Bewegung nach rechts. \aufgabe{Was machen die Tasten \T J und \T K ? \test}{\T J geht eine Zeile tiefer und \T K eine Zeile höher. Beachten Sie, dass der Cursor in kürzeren Zeilen zurückspringen kann und dann wieder die richtige Spalte erreicht.} Natürlich gehen diese Bewegungen auch mit den normalen Cursortasten \test. Allerdings sollte man sich darüber klar sein, dass diese nicht notwendig sind. Tippt man zuerst eine Zahl und dann eine der Aktionstasten, so wird diese Aktion so oft ausgeführt, wie die Zahl angibt. \aufgabe{Auf welchem Zeichen steht man nach der Eingabe von \T 1 \T 7 \T L, wenn der Cursor am Textanfang steht? \test}{Auf dem \texttt{a} von \texttt{Visual}.} Die Tasten \T W und \T B springen wortweise vorwärts und rückwärts. Mit \TShift\ zusammen werden die Wortgrenzen durch Leerzeichen festgelegt. \aufgabe{Warum bleibt der Cursor mit \T W am \texttt{ü} von \texttt{für} hängen? Wie kann man das vermeiden?}{\vi\ erkennt die Wortgrenzen daran, dass nach einigen Buchstaben etwas anderes kommt. Die Umlaute werden üblicherweise nicht als Buchstaben erkannt. Frühe Rechnersysteme hatten diese Zeichen gar nicht. Sollte bei Ihnen das \texttt{ü} nicht besonders behandelt werden, so denken Sie das nächste Mal an eine kleine Aufmerksamkeit für Ihren Administrator.} \T E springt an das nächste Wortende. \T 0 wechselt an den Anfang der Zeile, \T\$ an das Zeilenende. \ST G an das das Ende der Datei. \CT B blättert einen Bildschirm hoch und \CT F einen Bildschirm runter. \ST H springt an den Anfang des Bildschirms, \ST L an das Ende. Natürlich kann man das auch alles mit den einfachen Cursortasten machen. Es ist nur manchmal praktischer, die Abkürzung zu kennen. Manchmal muss man an die Stelle springen, an der eine bestimmte Wortgruppe steht. Man sieht die Worte aber von Hand hinlaufen? Viel zu unbequem! Mit \T / gelangt man in die unterste Zeile. Dort gibt man seinen Suchbegriff ein. Wird dieser mit \TEnter bestätigt, so springt der Cursor an die richtige Stelle. Mit \T N und \ST N kann man vorwärts oder rückwärts weitersuchen. \aufgabe{Was passiert bei \ST H \T / \T O \T D \T E \T R \TEnter\ \T 3 \T N im Demonstrationstext?}{In der letzten Zeile erscheint die Ausgabe \texttt{(wrapped)} und der Cursor bleibt stehen. \T 3 \T N springt dreimal nach vorn. Nur zwei weitere Sequenzen von \texttt{oder} vorkommen, springt das dritte \T N an die erste Fundstelle.} Die \fachwort{Richtungstasten}{Eine Taste, die den Cursor bewegt, am häufigsten wohl \T W und \ST W.} sollte man auswendig lernen, nicht nur weil man sie im nächsten Abschnitt benötigt. Deswegen: \emph{Jetzt ausprobieren!} \aufgabe{Nehmen Sie sich einen Zettel und einen Stift und notieren Sie die Wirkungen der Richtungstasten.}{Den Zettel benötigen Sie in Ihrer Geldbörse, diese Anleitung bleibt jedoch im Schulungsraum. Also nicht rumfaulenzen!} \section{Eingaben} Mit der Taste \T I wechselt man in die Eingabe. Alle folgenden Tasten werden als Zeichen in die Datei vor die Cursorposition geschrieben. Mit der Taste \TEsc\ kommt man wieder in den Kommandomodus zurück. Mit \T U kann man die letzte Änderung rückgängig machen. Das hilft aber oft nicht viel, hier genügt es, um immer wieder neu ansetzen zu können. Fügen Sie vor dem Wort \texttt{Rechentechnik} das Wort \texttt{alten} ein! \test Mit der Taste \ST I wechselt man ebenfalls die Eingabe. Allerdings wird nach der Cursorposition eingefügt. \test \aufgabe{Wie kommt man aus dem Eingabemodus \ST I wieder heraus?} {Auch mit \TEsc.} Will man Text löschen, so tippt man einfach auf \T X. Löschen Sie \texttt{alten} wieder! Es ist umständlich, zeichenweise zu löschen, deswegen kann man mit \T D \mbox{--}~gefolgt von einer Richtungstaste~-- von der aktuellen Stelle in die angegeben Richtung löschen. Um die ganze aktuelle Zeile zu löschen, kann man \T D \T D eingeben. Gelöschten Text kann man mit \T P nach und mit \ST P vor der aktuellen Cursorposition wieder einfügen. Auf diese Weise kann man kopieren! \aufgabe{Was passiert bei \T D \T E?}{Es wird zum nächsten Wortende gelöscht.} \aufgabe{Warum ist \T X \T P auf der \vi-Tasse als besonders interessanter Befehl mit aufgeführt?}{\T X löscht das Zeichen unter dem Cursor. Da \T P den gelöschten Text \mbox{--}~das einzelne Zeichen~-- \emph{nach} der aktuellen Cursorposition wieder einfügt, vertauscht diese Tastenkombination effektiv zwei Zeichen.} Da es ebenso umständlich ist, Text erst zu löschen und dann neu zu tippen, kann man mit \T R ein Zeichen überschreiben und mit \ST R in einen Überschreibmodus wechseln. Mit \T C und einer Richtungstaste kann man den so `übersprungenen' Text gegen einen selbst eingegebenen austauschen. Dabei ersetzt der neue Text den alten, ohne den Text außerhalb zu überschreiben. \aufgabe{Ersetzen Sie das Wort \texttt{Rechentechnik} durch \texttt{Computer}?}{Sie stellen sich auf den Anfang der Wortes und tippen dort \T C \T W. Alternativ kann man sich auch auf das Ende stellen und \T C \T B eingeben. Wem das alles zu kompliziert ist, der löscht das Wort mit \T D \T W (oder \T D \T B oder ganz einfach mit \T X) und fügt ein neues mit \T I ein. Will man \texttt{Rechentechnik} durch \texttt{Computertechnik} ersetzen, bietet sich \T C \T / \T T \T E \TEnter\ an.} \aufgabe{Warum ist die \vi-Tasse so klein?}{Weil \vi\ in sich logisch ist. Wiederholungen, Aktionen und Richtungen sind nicht voneinander abhängig.} \section{\vi\ verlassen} Aus dem Kommandomodus gelangt man nach der Eingabe von \T: in die unterste Zeile. Dort können wesentlich längere Kommandos eingegeben werden. Zum Verlassen ohne Abspeichern \zb gibt man \befehl{q!}, sonst \befehl{w} ein. Auch hier gelangt man mit \TEsc\ wieder in den normalen Kommandomodus. Man kann generell sagen: Wer öfter mal \TEsc\ drückt, macht nicht mehr falsch, als seine Mitmenschen zu nerven, weil es dauernd piept. Die weiteren Kommandos, die hier möglich sind, sprengen den Rahmen dieser Einführung. \aufgabe{Verlassen Sie \vi\ und starten Sie \befehl{vi} ohne Angabe einer Datei. Was kann man nun tun?}{Der Schirm ist leer, man kann jetzt mit \T I in den Eingabemodus umschalten und anfangen zu arbeiten. Abspeichern kann man das Produkt dann mit \kommando{w}{\texttt{"{}}datei\texttt{"{}}}. Ein einfaches \befehl{w} hilft deswegen nicht, weil \vi\ nicht weiß, wie die Datei heißen soll.} \loesungen{Lösungen zu den Aufgaben} \end{document}