

	\documentclass[a4paper,11pt]{article}
	\usepackage{ngerman}
	\usepackage[latin1]{inputenc}
	\setlength\parskip{\medskipamount}
	\setlength\parindent{0pt}
	\begin{document}

	
 % vim
 % Copyright Johnny Graber
 % Lizenz: GFDL
 % 
 % $Name: $
 % $Revision: 1.3.2.10 $
 % $Source: /cvsroot/selflinux/tutorial/software/editoren/vi/vim/vim,v $
 % SelfLinux-0.7.2
 %
 % Diese Datei ist Teil von SelfLinux http://www.selflinux.de
 %
 %%% $Id: vim,v 1.3.2.10 2002/12/03 16:37:41 tbanus Exp $

	\title{Praxisorientiertes vim-Tutorial}


	
	    \author{Johnny Graber}
	    %\url{mailto:selflinux@jgraber.ch}
    

	\maketitle

	
	
	%\ref{../index.tex}
	
		%\ref{anwendungen.tex}
		Anwendungs-Software
		%\ref{editoren1.tex}
		Editoren
	\ref{vim}

    \par{Layout}
    Frank Börner
	    %\url{mailto:frank@frank-boerner.de}
    
    	\par{Lizenz}
	GFDL
 
	\tableofcontents{}

        
	\section{Warum vi(m)?} \label{d64e63}
        

  
  
  \par
  
Der Editor vi ist seit sehr langer Zeit ein Grundbestandteil von UNIX-Systemen.
Damit ist er vermutlich eines der ältesten Programme, die noch verbreitet sind.
Man mag sich fragen, warum man sich mit diesem Urgestein beschäftigen soll. Die
Gründe sind wohl hauptsächlich die folgenden:
  

  \begin{list}{*}{}
   
	\item 
vi ist auf wohl jedem UNIX-System anzutreffen (und auch auf vielen
nicht-Unix-Systemen).
   
   
	\item 
vi ist ein extrem mächtiger Editor, aber dennoch klein und schnell.
   
   
	\item 
vi zu benutzen ist ''cool'' B-)
   
   \end{list}

  
  \par
  
Es gibt viele vi-Varianten. Die zweifellos beliebteste ist der ''Vi IMproved''
(vim). Daher bezieht sich dieser Artikel zum Teil speziell auf diesen
(selbstverständlich wurde dieser Artikel auch damit geschrieben).
  
 \section{Eine Datei erstellen} \label{d64e87}
        
  

  
  \par
  
Als erstes werden wir uns anschauen, wie man in vim eine Datei erstellt und
speichert. Starten Sie vim durch Eingabe von {\bf vi} oder
{\bf vim}.
  

  
  \par
  
Im vi(m) gibt es 3 Modi. Nach dem Start befinden wir uns im Kommandomodus. Um einen
Text einzugeben, müssen wir in den Eingabemodus wechseln. Dazu gibt es mehrere
Möglichkeiten. Um den Eingabemodus am Ende der aktuellen Zeile zu beginnen (d.h.
mit dem Cursor ans Ende springen und dort den Eingabemodus starten), können wir
{\bf A} (großes a; ''Append'' = ''anhängen'') drücken. Um ihn an der
aktuellen Cursorposition zu beginnen, drücken Sie nun {\bf i}
(''insert'' = ''einfügen'').   

  
  \par
  
Jetzt können Sie einen beliebigen Text tippen. Zuletzt wollen wir die Änderungen
speichern. Verlassen Sie dazu den Eingabemodus über die ESC Taste. Nun sind wir wieder im
Kommandomodus.   

  
  \par
  
Für viele Dinge, darunter auch das Öffnen und Speichern von Dateien, müssen wir
in den ''ex-Modus'' wechseln. Das machen wir durch die Taste {\bf :}.
Nun kann ein ex-Kommando eingegeben werden.
  

  
  \par
  
Um den Text in die Datei ''test01.txt'' zu schreiben, geben Sie {\bf :w
test01.txt} ein, gefolgt von ENTER. Abbrechen können Sie ein im
ex-Modus eingegebenes Kommando mit ESC. In beiden Fällen befinden Sie sich
danach wieder im Kommandomodus.
  
\section{Verlassen des vi} \label{d64e138}
        
  

  
  \par
  
Um vi(m) zu beenden, brauchen wir wieder ein ex-Kommando. Geben Sie, wenn Sie im
Kommandomodus sind, {\bf :q} ein. Dadurch wird vi unter der
Bedingung verlassen, dass die aktuelle Datei gespeichert wurde.
  

  
  \par
  
Sollten Sie einmal Ihre Änderungen verwerfen wollen, verlassen Sie vi mit
{\bf :q!}.
  
\section{Eine Datei öffnen} \label{d64e156}
        
  

  
  \par
  
Sie können vi beim Aufruf von der Shell einen Dateinamen übergeben. Dadurch wird
diese Datei geöffnet. Geben Sie dazu beispielsweise {\bf vi
test01.txt} in der Shell ein.
  

  
  \par
  
Alternativ können Sie auch im vi mit dem ex-Kommando {\bf :e
test01.txt} eine Datei öffnen.
  

  
  \par
  
Wenn Sie eine Datei auf eine dieser Weisen geöffnet oder beim Speichern
einen Dateinamen angegeben haben, brauchen Sie nun beim nächsten Speichern nicht
mehr den Dateinamen eingeben. Es genügt das ex-Kommando {\bf :w}.
Um zu speichern und den Editor zu verlassen genügt {\bf :wq}.
  
\section{Mehrere Dateien öffnen} \label{d64e183}
        
  

  
  \par
  
Sie können vim beim Starten auch mehrere Dateinamen übergeben: {\bf vi *.cpp
*.h}. Dabei wird die zuerst genannte Datei direkt geöffnet und kann
bearbeitet werden. Wenn Sie mit der Bearbeitung der nächsten beginnen wollen,
erreichen Sie dies über den ex-Befehl {\bf :next}. Zur vorherigen
Datei gelangen Sie entsprechend mit {\bf :prev}.
  
\section{Bestimmte Stellen wiederfinden} \label{d64e204}
        
  

  
  \par
  
Beim Editieren einer langen Datei, insbesondere eines Quellcodes, ist es sehr
praktisch, wenn man Markierungen setzen kann, um später schnell diese Stellen
wiederzufinden.
  

  
  \par
  
Um eine Markierung zu setzen, drücken Sie (im Kommandomodus) die Zeichenfolge
{\bf mx}, wobei x ein beliebiger Kleinbuchstabe ist. Um später zu
dieser Markierung zu springen, genügt ein (wieder im Kommandomodus) eingegebenes
{\bf 'x}, wobei x wieder der gleiche Buchstabe ist. Sie können
für Markierungen entweder Buchstaben (a-z und A-Z) oder ganze Wörter verwenden.
Diese Markierungen können auch überall dort
verwendet werden, wo Zeilenangaben auftreten.
  
\section{Kopieren und Einfügen} \label{d64e222}
        
  

  
  \par
  
Sie haben in vi nicht nur die Möglichkeit, 26 Markierungen zu setzen, Sie können
auch 26 Puffer zum Kopieren und Einfügen verwenden (was ein großer Vorteil von
vi gegenüber anderen Editoren ist).
  

  
  \par
  
Drücken Sie {\bf v} um den Anfang des Bereiches zu markieren den
Sie kopieren wollen. Bewegen Sie den Cursor zum Ende. Dabei wird der markierte
Bereich hervorgehoben. Um den markierten Bereich z.B. in den Puffer h zu
kopieren genügt nun ein {\bf ''hy} (Das Anführungszeichen steht für
''Puffer'', das ''y'' steht für ''yank'', also kopieren). Einfügen können Sie den
Puffer bei Bedarf mit {\bf ''hp} (''p'' für ''paste, einfügen).
  

  
  \par
  
Anstatt einen Puffer über einen Buchstaben anzusprechen, können Sie auch einfach
einen Standardpuffer verwenden. Dazu lassen Sie jeweils das Anführungszeichen
und den Puffernamen weg.
  
\section{Schnelles Navigieren durch den Text} \label{d64e246}
        
  

  
  \par
  
Im Kommandomodus können Sie sich mit den Cursortasten durch den Text navigieren.
Sie können dabei auch eine Zahl voranstellen. Wenn Sie z.B.
{\bf 30} eingeben und danach die NACH-LINKS -Taste drücken,
bewegt sich der Cursor um 30 Zeichen nach links.
  

  
  \par
  
Das Voranstellen von Zahlen als Wiederholungsfaktor funktioniert bei fast allen
Befehlen.
  

  
  \par
  
Mit {\bf b} können Sie ein Wort zurück und mit w eines nach vorne.
Einen Satz zurück kommen Sie mit {\bf (} und einen vor entsprechend
mit {\bf )}. Auch hier geben vorangestellte Zahlen den
Wiederholungsfaktor an: {\bf 5(} bewegt den Cursor 5 Sätze zurück
und mit {\bf 4w} gelangen Sie 4 Wörter nach vorn.
  
\section{Löschen von Text} \label{d64e283}
        
  

  
  \par
  
Im Eingabemodus ist es relativ umständlich, Text zu löschen. Wenn Sie eine
komplette Zeile entfernen wollen, stehen Sie sogar vor einem sehr schwierigen
Problem. Daran merkt man schon, dass der Eingabemodus wirklich nur zum Eingeben
von Text gedacht ist und nicht zum Editieren.
  

  
  \par
  
Im Kommandomodus steht uns zum Löschen von Text das Kommando
{\bf d} zur Verfügung. Danach folgt ein Buchstabe, der
kennzeichnet, auf was für eine Texteinheit wir uns beziehen (Wort, Satz, Zeile,
...). Der gelöschte Text wird zusätzlich in die Standard-Zwischenablage
eingefügt.
  

  
  \par
  
Um ein Wort zu löschen, drücken Sie {\bf dw}. Das Wort hinter dem
Cursor löschen Sie entsprechend mit {\bf db}. Auch hier ist es
wieder möglich, eine Zahl voranzustellen. So löschen Sie mit
{\bf 3dd} 3 Zeilen und mit {\bf 5dw} 5 Wörter.
  

  
  \par
  
Bis zum Anfang des aktuellen Satzes löschen Sie mit {\bf d(}, bis
zum Ende mit {\bf d)}.
  

  
  \par
  
Bis zum Anfang der aktuellen Zeile kann man mit {\bf d^} oder auch
mit {\bf d0} löschen und bis zum Ende mit {\bf d\$}.
  

  
  \par
  
Bei einigen Kommandos kann man auch einen Bereich voranstellen, auf den sie sich
beziehen sollen. So entfernen Sie mit {\bf 1,5d} die ersten fünf
Zeilen einer Datei. Statt Zeilennummern können Sie auch Markierungen verwenden:
{\bf 'a,'bd}.
  
\section{Suchen und Ersetzen} \label{d64e343}
        
  

  
  \par
  
Suchen und Ersetzen können Sie in vi mit regulären Ausdrücken. Hier eine
Einführung in reguläre Ausdrücke zu geben würde den Rahmen dieser
Kurz-Einführung sprengen.
  

  
  \par
  
Wenn Sie nur nach einem Wort suchen, können Sie das mit
{\bf /suchbegriff/} machen. Wenn Groß-/Kleinschreibung ignoriert
werden soll, verwenden Sie {\bf /wort/i}.
  

  
  \par
  
Um Text zu ersetzen, müssen Sie in den ex-Modus wechseln. Folgendes Kommando
ersetzt alle Vorkommen von ''Unix'' mit ''Linux'':
{\bf :1,\$s/Unix/Linux/g} (Bereich: 1,\$, also vom Anfang bis zum
Ende der Datei ''s'' für ''substitude'', ''ersetzen''. Das ''g'' am Ende steht für
''global''. Wird das g weggelassen, wird bei jeder Zeile bloss das erste 
Vorkommen von Unix ersetzt. Sehr nett ist es, dass man eben auch innerhalb 
eines bestimmten
Bereiches die Ersetzung durchführen lassen kann, d.h. man markiert z.B. per
{\bf ma} und {\bf mb} zwei Zeilen und verwendet dann
{\bf :'a,'bs/foo/bar/g}.
  

  
  \par
  
Hängt man am Ende des Suchtextes noch ein /c an, fragt vi vor dem Ersetzen
nach. Dies funktioniert auch in der Kombination mit /g. Somit lautet das
vorherige Kommando, ergänzt um das Nachfragen, {\bf :'a,'bs/foo/bar/gc}.
  

\section{Praktische Tips} \label{d64e385}
        
  

  
  \par
  
Wenn Sie in vi zwei Zeilen zusammenfügen wollen, können Sie das leider nicht so
machen, wie Sie es von anderen Editoren gewohnt sind. In vi ist eine Zeile eine
Einheit und das Newline-Zeichen am Ende ist kein Zeichen, das gelöscht werden
kann (Moderne vi-Klone bieten diese Möglichkeit im Eingabemodus). Stattdessen
müssen sie im Kommandomodus {\bf J} drücken, wodurch die nächste
Zeile an die aktuelle angefügt wird. Der Cursor braucht dabei nicht am Ende
einer Zeile zu sein.
  

  
  \par
  
Recht praktisch ist auch die Möglichkeit, die Ausgabe eines Unix-Kommandos in
den Text einzufügen. Wollen Sie z.B. die aktuelle Uhrzeit in den Text einfügen,
verwenden Sie {\bf :r !date}. Das Einfügen einer Datei geht
hingegen per {\bf :r datei}.
  

  
  \par
  
Buchstabendreher kann man per {\bf xp} korrigieren, zwei Zeilen
vertauschen können Sie per {\bf ddp}. Probieren Sie es aus!
  


  \subsection{Rechtschreibprüfung mit aspell} \label{d64e414}
        
   

   
  \par
  
Mit {\bf GNU aspell} (http://aspell.net/) gibt es eine gute
und freie Rechtschreibprüfung. Da auf ein grafisches Frontend
verzichtet wurde, kann man {\bf aspell} direkt im {\bf vim} benutzen. Dafür
müssen Sie ihre {\bf .vimrc} lediglich um die untenstehende Zeile
ergänzen:
   

   \begin{tabular}{|l|}
                  \hline
                  \begin{tt} 
        
.vimrc
    \end{tt} \\ 
                  \hline
                  \begin{minipage}{130mm} 
                  \begin{scriptsize} 
                  \begin{verbatim} 
        
:map <F12> :w!<CR>:!aspell --lang=german check %<CR>:e! %<CR>
    \end{verbatim} 
                  \end{scriptsize} 
                  \end{minipage} \\
                  \hline
                  \end{tabular}

   
  \par
  
Wenn Sie nun auf die Taste {\bf F12}
drücken, wird {\bf aspell} gestartet
und beginnt mit der Prüfung des geladenen Textes. An der Stelle
von {\bf F12} kann man auch andere Tasten verwenden, doch muss man
darauf achten, nicht eine häufig gebrauchte Funktion zu
überlagern.
   
  

  
  \subsection{Mit vim Verzeichnisse durchsehen} \label{d64e463}
        
   

   
    \begin{tt} \begin{scriptsize} user@linux \~{}/ \$ 
vim .
     \end{scriptsize} \end{tt} \linebreak 
   

   
  \par
  
Mit diesem Befehl starten Sie bei den neueren Klonen {\bf vim} 
im {\bf mc}-Modus. {\bf vim} präsentiert nun keine neue Datei, sondern den Inhalt
des aktuellen Ordners.
   

   
  \par
  
Mit {\bf ?} bekommen Sie eine Liste mit speziellen Befehlen, die in
diesem Modus verwendet werden können. Sie können den Cursor auf
das gewünschte Verzeichnis verschieben und dieses durch betätigen
von {\bf ENTER} betreten. \linebreak 
Wenn Sie dies bei einer Datei machen, wird diese in {\bf vim} geöffnet
und kann wie gewöhnlich bearbeitet werden.
   

   
  \par
  
Zum Verlassen des {\bf mc}-Modus dient das bekannte Kommando {\bf :q}
   
  
\section{vim-Konfiguration} \label{d64e513}
        
  

  
  \par
  
Der {\bf vim} besitzt eine Konfigurationsdatei mit dem Namen \$HOME/.vimrc. Hier können
ganz normale Befehle eingetragen werden, die beim Starten dann abgearbeitet
werden. Während man Syntax-Highlighting für alle möglichen Programmiersprachen
mit {\bf :syntax on} direkt beim Arbeiten einschaltet, kann man
entsprechend in die .vimrc einfach {\bf syntax on} eintragen. Vim
beherrscht über 120 verschiedene Programmier- und Beschreibungssprachen.
Natürlich kann man auch Hervorhebungsregeln selbst zusammenstellen.
  

  
  \par
  
Das Kommando {\bf syntax on} funktioniert nur, wenn vim
entsprechend compiliert wurde. Die meisten Distributionen enthalten mehrere
vim-Pakete (z.B. vim-enhanced und vim-minimal), wobei {\bf syntax
on} nur in der ersten Version funktioniert.
  

  
  \par
  
Wer noch nie mit {\bf vi} gearbeitet hat, wird nicht daran gewöhnt sein, dass die
Backspace- und die Entf-Tasten Zeilenumbrüche nicht wie normale Zeichen
behandelt (sie also nicht löschen können). Dieses Verhalten kann man durch
Eintragen von {\bf set bs=2} in die .vimrc ändern.
  

  
  \par
  
Wenn Sie beim Editieren automatische Einrückung bevorzugen, versuchen Sie mal
{\bf set ai}.
  
\section{Wichtige vi-Kommandos} \label{d64e558}
        
  

  
  \par
  
Konvention
Im folgenden werden einige oft benutzte vim-Kommandos aufgelistet. Fast alle
diese Kommandos sind für den Kommandomodus. ex-Kommandos werden durch das
{\bf :} am Anfang gekennzeichnet. Manche Kommandos haben noch ein
[Count] vorangestellt. Das heißt, daß das Kommando normalerweise einmal, bei 
einer vorher gedrückten Zahl n aber n-mal ausgeführt wird.
  

\subsection{Starten} \label{d64e569}
        
  

  
    
    %table
    \begin{tabular}{|l|l|}
    \hline 
            
               
		\begin{minipage}{60mm}
              Komando
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Beschreibung
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf vi}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Aufruf von vi mit leerem Text-Puffer.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf vi Dateiname}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Datei wird geladen und der Cursor bei der ersten Zeile platziert.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf vi + Dateiname}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Datei wird geladen und der Cursor bei der letzten Zeile platziert.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf vi +n}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Dateiname Datei wird geladen und der Cursor bei der n-ten Zeile
platziert.
    
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf vi +/Zeichenkette Dateiname}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Datei wird geladen, der Cursor bei der Zeile mit Zeichenkette
plaziert.
    
		\end{minipage}
	      \\ \hline
    \end{tabular}
  


\subsection{Beenden} \label{d64e637}
        
  

  
    
    %table
    \begin{tabular}{|l|l|}
    \hline 
            
               
		\begin{minipage}{60mm}
              Komando
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Beschreibung
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf :wq}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Speichern und vi verlassen.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf :q}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              vi verlassen, falls Datei unverändert.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf :q!}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              vi verlassen, egal ob Datei verändert oder nicht.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf :w}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Datei speichern.
		\end{minipage}
	      \\ \hline
    \end{tabular}
  


\subsection{Dateien laden} \label{d64e695}
        
  

  
    
    %table
    \begin{tabular}{|l|l|}
    \hline 
            
               
		\begin{minipage}{60mm}
              Komando
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Beschreibung
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf e Datei}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Datei wird geladen, wenn sie existiert, ansonsten erzeugt.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf :next}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Die nächste Datei wird geladen, falls vi mit mehreren Dateien aufgerufen
wurde.
    
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf :prev}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Die vorherige Datei wird geladen, falls vi mit mehreren Dateien
aufgerufen wurde.
    
		\end{minipage}
	      \\ \hline
    \end{tabular}
  


\subsection{Cursorbewegungen} \label{d64e743}
        
  

  
    
    %table
    \begin{tabular}{|l|l|}
    \hline 
            
               
		\begin{minipage}{60mm}
              Komando
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Beschreibung
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf [Count]j}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Den Cursor um eine (bzw. Count) Zeile runter u.s.w.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf [Count]k}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Den Cursor um eine (bzw. Count) Zeile rauf u.s.w.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf [Count]l}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Den Cursor um ein (bzw. Count) Zeichen rechts u.s.w.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf [Count]h}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Den Cursor um ein (bzw. Count) Zeichen links.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf [Count]w}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Den Cursor um ein (bzw. Count) Wort rechts.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf [Count]b}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Den Cursor um ein (bzw. Count) Wort links.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf [Count]h}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Den Cursor um ein (bzw. Count) Zeichen links.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf [Count]G}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Springe zum Ende der Datei oder, falls Count gegeben, zu Zeile
Count.
    
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf Ctrl-f}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Page-Down.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf Ctrl-b}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Page-Up.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf ^}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Springe zum Anfang der aktuellen Zeile.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf \$}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Springe zum Ende der aktuellen Zeile.
		\end{minipage}
	      \\ \hline
    \end{tabular}
  


\subsection{Text eingeben} \label{d64e881}
        
  

  
    
    %table
    \begin{tabular}{|l|l|}
    \hline 
            
               
		\begin{minipage}{60mm}
              Komando
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Beschreibung
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf i}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              (insert), Eingabe vor dem aktuellen Zeichen.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf a}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              (append), Eingabe nach dem aktuellen Zeichen.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf I}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              (Insert), Eingabe am Anfang der aktuellen Zeile.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf A}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              (Append), Eingabe am Ende der aktuellen Zeile.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf o}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              neue Zeile und Eingabe nach der aktuellen Zeile.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf O}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              neue Zeile und Eingabe vor der aktuellen Zeile.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf Ctrl-v}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Eingabe eines Steuerzeichens.
		\end{minipage}
	      \\ \hline
    \end{tabular}
  


\subsection{Text ändern} \label{d64e969}
        
  

  
    
    %table
    \begin{tabular}{|l|l|}
    \hline 
            
               
		\begin{minipage}{60mm}
              Komando
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Beschreibung
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf [Count]rZeichen}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              (replace), Änderung des aktuellen Buchstaben in Zeichen.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf R}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              (Replace), Überschreibmodus vom aktuellen Buchstaben aus.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf cwWort}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              ersetzt das Wort vor dem Cursor durch Wort.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf ccZeichenkette}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              ersetzt die aktuelle oder nächste Zeile durch Zeichenkette.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf J}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              hängt die der aktuellen folgende Zeile an die aktuelle an.
		\end{minipage}
	      \\ \hline
    \end{tabular}
  


\subsection{Text löschen} \label{d64e1037}
        
  

  
    
    %table
    \begin{tabular}{|l|l|}
    \hline 
            
               
		\begin{minipage}{60mm}
              Komando
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Beschreibung
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf [Count]x}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              1 (bzw. Count) Zeichen unter dem Cursor (rechts) wird gelöscht.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf [Count]X}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              1 (bzw. Count) Zeichen links vom dem Cursor wird gelöscht.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf D}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              löscht von der Cursorposition bis zum Zeilenende.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf [Count]dd}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              1 (bzw. Count) Zeilen werden gelöscht.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf [Count]d[Richtung]}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              1 (bzw. Count) mal wird in Richtung [Richtung] gelöscht.
		\end{minipage}
	      \\ \hline
    \end{tabular}
  


\subsection{Die Zwischenablagen} \label{d64e1105}
        
  

  
    
    %table
    \begin{tabular}{|l|l|}
    \hline 
            
               
		\begin{minipage}{60mm}
              Komando
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Beschreibung
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf ''1..0, a..z}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Die Ablage 1..0 bzw. a..z für die nächste Aktion auswählen.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf [Count]y[Richtung]}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              1 (bzw. Count) Bewegungen in [Richtung].
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf [Count]yy}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              1 (bzw. Count) Zeilen werden in die aktuelle Zwischenablage
kopiert.
    
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf Beliebige Löschaktion}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Gelöschter Text wird in die aktuelle Zwischenablage kopiert.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf p}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Inhalt der Zwischenablage wird hinter dem Cursor eingefügt.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf P}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Inhalt der Zwischenablage wird vor dem Cursor eingefügt.
		\end{minipage}
	      \\ \hline
    \end{tabular}
  


\subsection{Suchen und Ersetzen} \label{d64e1183}
        
  

  
    
    %table
    \begin{tabular}{|l|l|}
    \hline 
            
               
		\begin{minipage}{60mm}
              Komando
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Beschreibung
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf /Regex}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Suche vorwärts nach dem regulären Ausdruck Regex.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf ?Regex}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Suche rückwärts nach dem regulären Ausdruck Regex.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf n}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Wiederholt das letzte Suchkommando.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf N}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Wiederholt das letzte Suchkommando in die jeweils andere Richtung.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf fZeichen}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Sucht nach Zeichen in der aktuellen Zeile vorwärts.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf FZeichen}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Sucht nach Zeichen in der aktuellen Zeile rückwärts.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf :%s/Quelle/Ziel/}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Ersetzt Quelle textweit beim 1. Vorkommen in der Zeile durch Ziel.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf :%s/Quelle/Ziel/g}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Ersetzt Quelle im Text überall durch Ziel.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf :%s/Quelle/Ziel/gc}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Ersetzt Quelle im Text überall durch Ziel, fragt aber vorher nach.
		\end{minipage}
	      \\ \hline
    \end{tabular}
  


\subsection{Bookmarks} \label{d64e1291}
        
  

  
    
    %table
    \begin{tabular}{|l|l|}
    \hline 
            
               
		\begin{minipage}{60mm}
              Komando
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Beschreibung
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf mKey}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Setzt eine Marke an der aktuellen Stelle unter dem Namen der Taste
Key.
    
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf 'Key}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Springt zu der Zeile mit der Marke Key.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf `Key}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Springt zu der Stelle mit der Marke Key.
		\end{minipage}
	      \\ \hline
    \end{tabular}
  


\subsection{Sonstige Goodies} \label{d64e1339}
        
  

  
    
    %table
    \begin{tabular}{|l|l|}
    \hline 
            
               
		\begin{minipage}{60mm}
              Komando
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Beschreibung
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf ...}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              Wiederholt die letzte Editieraktion,
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf %}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              (über einer Klammer)  Springt auf die korrespondierende
Klammer$\backslash$end{center}.
    
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf :u}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              (undo) Rückgängig.
		\end{minipage}
	      \\ \hline 
            
               
		\begin{minipage}{60mm}
              {\bf :r}
		\end{minipage}
	      & 
            
               
		\begin{minipage}{60mm}
              (redo) Wieder herstellen.
		\end{minipage}
	      \\ \hline
    \end{tabular}
  



	\ref{inhalt.tex}


	\end{document}
	
