Suchen

Diese Kapitel führt Dich in die verschiedenen VIM Suchbefehle ein. Die grundlegenden Suchkommandos in vim sind ziemlich einfach, was bedeutet, dass der Einstieg in die Suchfunktionen rel. leicht ist. In diesem Kapitel wirst Du folgendes lernen:
  1. Einfache Vorwärtssuche
  2. Suchoptionen
  3. Kettensuche
  4. Änderung der Suchrichtung
  5. Grundlegende reguläre Ausdrücke

Einfache Suche

Um nach einem Ausdruck zu suchen nimm das /Begriff Kommando. Um beispielsweise nach dem Wort include zu suchen benutze das Kommando /include (Der Cursor wandert hierbei immer zum Ende des Bildschirms, Du kannst das Wort eingeben und Du musst die Eingabe mit <ENTER> abschließen).

Hinweis: Die Buchstaben .*[]^%/\~$ haben eine spezielle Bdeutung. Wenn Du sie in einer Suche benutzen willst musst Du ihnen einen \ voranstellen. Beispiel:
Um . zu finden benutze \.

Der cursor steht jetzt auf dem i von include, wie in Abbildung 3.1 gezeigt.

Suche nach include

Abbildung 3.1: Suche nach include"

Um das nächste include zu finden benutzt Du das /<Enter> Kommando. Der Cursor wandert nun zu der nächsten Stelle an der der Begriff auftaucht, wie Abbildung 3.2 zeigt:

Weitersuchen nach include - vorwärts -

Abbildung 3.2: Nochmal vorwärts suchern (/<ENTER>

Eine andere Möglichkeit den nächsten Treffer zu finden ist das n Kommando. Dieses Kommando macht das gleiche wie /<ENTER> aber es braucht nicht soviele Tasten. Abbildung 3.3 zeigt das Ergebnis dieser Suche.

Weitersuchen mit n

Abbildung 3.3: Weitersuchen (n)

Sowohl für das /<ENTER> als auch für das n kann ein Zähler eingegeben werden. Falls ein Zähler x angegeben wird sucht der Befehl nach dem xten Treffer, ausgehend von der derzeitigen Position.

Suche Zwischenspeicher

Das Suchkommando hat eine Zwischenspeicherfunktion. Stell Dir einmal vor, dass Du 3 Suchen machst:
	    /eins
	    /zwei
	    /drei
	 
Nun starten wir mit einer neuen Suche indem wir einen / eingeben ohne <ENTER> zu drücken. Wenn Du jetzt die Cursor Taste nach oben drückst, fügt vim /tree in der Befehlszeile ein. Wenn Du jetzt <ENTER> drückst sucht vim nach dem Wort drei. Wenn Du nicht <ENTER> drückst, sondern anstatt dessen nochmal "Nach oben" ändert vim die Eingabezeile zu /two. Ein weiteres mal "Nach oben" bringt Dich zu /one.
Anders ausgedrückt, nachdem Du eine Reihe von Suchen durchgeführt hast, kannst Du mit den "Pfeil nach oben (up)" und den "Pfeil nach unten" Tasten in den vorhergehenden Suchen navigieren.

Suchoptionen

Viel verschiedne Optionen kontrollieren wie gesucht wird. In diesem Abschnitt werden ein paar besprochen.

Hervorhebung

Der folgende Befehl veranlasst vim dazu alle Treffer auf eine Suche hervorzuheben:
:set hlsearch

Wenn Du diese Option einschaltest und dann nach beispielsweise include suchst, werden alle Treffer, wie Abbildung 3.4 zeigt, hervorgehoben.
Um hervorgehobenes Suchen wieder abzuschalten, nimm diesen Befehl:
:setnohlsearch

Hervorgehobene Suche ist jetzt abgeschaltet. Treffer werden nicht mehr herorgehoben. Jedoch wird die Hervorhebung wieder erscheinen, wenn Du einen Suchbefehl eingibst.

Die hervorgehobene Suche

Abbildung 3.4: Die hlsearch Option

Inkrementelle (stückweise) Suche

Als Standard verwendet vim die traditionelle Suchmethode: Du gibst eine Zeichenkette ein und Vim sucht den Begriff. Wenn Du jedoch den folgenden Befehl eingibst sucht vim incrementell
	    :set incsearch
	 
Vim beginnt mit der Suche sobald Du den ersten Buchstaben eingibst. Jeder zusätzliche Buchstabe schrängt die Suche weiter ein.
Stell Die beispielsweise vor, Du willst nach ioctl.h suchen,aber dieses mal willst Du die incrmentelle Suche benutzen. Als erstes schaltest Du die inkrementelle Suche ein.
Als nächstest beginnst Du mit der Suche indem Du /i eingibst. Abbildung 3.5 zeigt wie der editor nach dem ersten i sucht und den Cursor entsprechend positioniert.

Suche nach /i

Abbildung 3.5: Ergebnis nach /i

Nun gibst Du das o ein. Deine Suchbefehl ist nun /io, also findet der Editor den ersten Treffer für die Zeichenkette io, wie Abbildung 3.6 zeigt.

Incremetelle Suche nach Eingabe von io

Abbildung 3.6: Incrementelle Suche nach Eingabe von /io

Das ist aber immer noch nicht die Stelle, die du eigentlich suchst, also fügst Du an den Suchbefehl noch ein can,was zu dem Suchbefehl /ioc führt. Vim geht also weiter bis zum ersten Auftauchen von ioc.
Jetzt bist Du an der Stelle zu der Du wolltest und kannst <ENTER> drücken. Um die incrementelle Suche wieder zu beenden benutzt Du den Befehl:
	    :set noincsearch
	 

Inkrementelle Suche nach Eingabe von /ioc.

Abbildung 3.7: Inkrementelle Suche nah Eingabe von /ioc

Rückwärts suchen

Der rückwärts Suchbefehl (?) sucht im Text über der Cursorposition. Das n Kommando wiederholt die letzte Suche. Wenn die Rückwärtssuche die zuletzt gebrauchte war, wird auch bei Eingabe von n rückwärts gesucht. Wenn die letzte Suche vorwärts war, sucht auch n vorwärts.
Abbildung 3.8 Zeigt wie das ? und das n Kommando zusammenarbeiten können.

? und n Kommado

Abbildung 3.8: ? und n Befehl

Richtungsänderung

Stell Dir vor Du suchst in vorwärts Richtung mit dem Befehl /unsigned. Du kannst die Suchrichtung ändern indem Du den ? Befehl benutzt. Das n Kommando wiederholt Deine Suche in derselben Richtung. Der N Befehl dreht die Richtung um und wiederholt die Suche.
Um die Sache ein wenig klarer zu machen, wurde mit dem Befehl:
	    :set number
	 
Zeilennummerierung eingeschaltet.
In diesem Beispiel benutzen wir die folgenden Suchbefehle:

Befehl Bedeutung Ergebnis
/unsiged Vorwärtssuche nach "unsigned" Zeile 24
n Wiederholung in gleicher Richtung (vorwärts) Zeile 26
n Nochmalige Suche (vorwärts) Zeile 29
? Rückwärts Suche der vorhergehenden Zeichenkette (unsigned) Zeile 26
N Ändere die Richtung und wiederhole die Suche Zeile 29
Abbildung 3.9 zeigt wie das Kommanndo /unsigned benutzt wird um eine Suche durchzuführen. Das n Kommando wurde zweimal verwendet um zum nächsten Auftreten des Ausdrucks zu kommen. Dann drehten wir die Suchrichtung mit ? um (damit geht es immer rückwärts). Abschließend, haben wir die Suchrichtung erneut mit dem N Befehl umgedreht. Abbildung 3.9 zeigt dieses mühselige Vorgehen.

Verschiedne Suchbefehle

Abbildung 3.9: Unterschiedliche Suchbefehle

Grundlegende reguläre Ausrücke

Vim bennutzt reguläre Ausdrücke um anzugeben, nach was gesucht werden soll. Reguläre Ausdrücke sind zum spezifizieren von Suchausdrücken sehr compact und besonders mächtig. Unglücklicherweise hat diese Mächtigkeit seinen Preis. Den richtigen regulären Ausdruck zu finden ist etwas trickreich.
Lassen Sie uns mit etwas einfachem beginnen. In einem regulären Ausdruck entsprechen die normalen Buchstaben sich selbst. So passt der reguläre Ausdruck Steve auf Steve.

Der Anfang (^) und das Ende ($) einer Zeile

Das Zeichen ^ passt auf den Zeilenanfang (es ist kein Zufall das dies auch der Befehl ist um zum Zeilenanfang zu kommen). Der Ausdruck include entspricht dem Wort include überall innerhalb einer Zeile. Aber der Ausdruck ^include passt nur auf include, wenn es am Zeilenanfang steht.
Das $ Zeichen passt auf das Zeilenende. Daher findet der Ausdruck was$ was nur, wenn es am Zeilenende steht. Abbildung 3.10 zeigt beispielsweise eine Suche nach dem Ausdruck the, wobei die hervorhebung eingeschaltet ist.

Suche nach the

Abbildung 3.10: Suche nach the

Als nächstes siehst Du was passiert, wenn Du nach dem regulären Ausdruck ^the suchst. Das Ergebnis, wie in Abbildung 3.11 dargestellt, zeigt das dieser Ausdruck nur 2 mal auftritt, die entsprechenden Zeilen werden markiert.

Suche nach ^the

Abbildung 3.11: Suche nach ^the

Abschließend eine Suche nach the$. Wie Du in Abbildung 3.12 siehst endet nur eine Zeile auf the.

Suche nach the$

Abbildung 12: Suche nach the

Wenn Du nach einer Zeile suchst die nur das Word the enthält, benutze den regulären Ausdruck ^the$. Um nach leeren Zeilen zu suchen, verwende ^$.

Irgendein einzelnes Zeichen

Das Zeichen . pass auf ein einzelnes Zeichen. Zum Beispiel passt das Muster c.m auf jede Zeichenkette derren erstes Zeichen c ist, dass ein weiteres Zeichen enthält und derren letztes Zeichen m ist. Abbildung 3.13 zeigt, dass der Ausdruck auf com in computer und auf cam in became passt.

Suche nach c.m

Abbildung 3.13: Das besondere Zeichen .

Besondere Zeichen finden

Die meisten Symbole haben eine besondere Bedeutung in regulären Ausdrücken. Um diese besonderen Zeichen selbst zu suchen, musst Du den Zeichen einen Backslash (\) vorranstellen. Um the. (punkt) beispielsweise zu finden, solltest Du den Ausdruck the\. benutzen.

Zusammenfassung reguläre Ausdrücke

Bei der folgenden Liste gehen wir davon aus, dass die Option 'magic' eingeschaltet ist (ist Standard).

x Der Buchstabe x
^ Zeilenanfang
$ Zeilenende
\Zeichen Schaltet die Sonderbedeutung einiger Zeichen aus, gibt bei wenigen anderen eine besondere Bedeutung.


zurück Inhalt weiter

Maik Holtkamp Letzte Änderung: Vim_logo