vim-logo In einer Datei suchen

Eine Datei wird mit dem Schrägstrich / im Kommandomodus ESC durchsucht. Natürlich kann hier auch regular expression angewendet werden:

/^require

Mit n gelangt man zum nächsten Treffer. Um auf den Treffer davor zu kommen drückt man N.

Auf einer Zeile suchen

Beim Navigieren in einer langen Zeile ist f sehr hilfreich. So springt der Cursor bei f > auf die erste Übereinstimmung, mit dem Zeichen >. Ein F > sucht von der aktuellen Cursor Position von rechts nach links weiter. Um zum nächsten Treffer zu gelangen reicht ein ;.

In mehreren Dateien suchen

Dateien können mit grep durchsucht werden:

:grep require *.rb

gefunden werden alle Dateien die das Wort “require” beinhalten und die Dateiendung rb haben. Ein Ergebnis könnte in etwa so aussehen:

Press ENTER or type command to continue
start.rb:4:require 'open-uri'
model.rb:1:require 'active_record'
youtube.rb:1:require 'nokogiri'
youtube.rb:2:require 'open-uri'

Drückt man nun ENTER wird sofort der erste Treffer start.rb mit Cursor auf Zeile 4 in Vim geöffnet.

Um eine Liste der gefunden Ergebnisse zu erhalten, wird ein :cl im Kommandomodus ESC gemacht:

:cl
1 start.rb:4:require 'open-uri'
2 model.rb:1:require 'active_record'
3 youtube.rb:1:require 'nokogiri'
4 youtube.rb:2:require 'open-uri'

Um z. B. auf den letzten Treffer zu gelangen, wird die erste Zahl (4) bei den Treffer angegeben.

:cc 4

Es ist natürlich auch möglich bekannte grep Funktionen wie -r für rekursive Suche oder -P für Perl regular expression, zu verwenden.

Einstellungen für die .vimrc

Die erste Einstellung soll schon bei der Eingabe, die ersten Ergebnisse anzeigen und nicht erst beim Absenden des ganzen Suchbegriffes:

set incsearch

Eine weitere Einstellung ist hlsearch. Sie zeigt alle Treffer an und nicht nur den ersten Treffer in der Datei.

set hlsearch

Das Suchtreffer in Vim dauerhaft markiert bleiben, finde ich eher störend, darum habe ich mir in meiner vimrc die ENTER Taste so belegt das sie die Markierung aufhebt.

nnoremap  :nohlsearch/

Damit kann ich nach der Suche, wenn ich die Markierungen nicht mehr benötige einfach ein ENTER drücken und sie verschwinden.