2012-09-21 7 views
9

Gibt es eine Möglichkeit, nach Text in einem Ordner zu suchen und Suchergebnisse in einem separaten Puffer in Vim anzuzeigen? (Wie Sublime Text Ctrl + Shift + F Ergebnisse)Vim Suchtext in Ordner

Antwort

23

Nein, Sie brauchen kein Plugin. Der Standard :vimgrep (oder :vim) ist alles, was Sie benötigen.

Suche nach foo in jeder Datei im aktuellen Verzeichnis:

:vim foo * | cw 

Suche nach foo in jeder JavaScript-Datei im aktuellen Verzeichnis:

:vim foo *.js | cw 

Suche nach foo in jeder JavaScript-Datei in der Aktuelles Verzeichnis rekursiv:

:vim foo **/*.js | cw 

Suche für das aktuelle Wort in jeder Datei im aktuellen Verzeichnis:

:vim <C-r><C-w> * | cw 
:vim <cword> * | cw 

:

+0

schön (edit :cw[indow] statt :copen verwenden) Sieht aus, aber gibt es eine Möglichkeit, eine Datei mit einer gefunden zu öffnen Ergebnisse, ohne den Puffer zu fokussieren? –

+0

Natürlich. Siehe ': h quickfix'. Zum Beispiel: ': cc5', um zu Fehlernummer 5 zu springen,': cn', um zum nächsten Fehler zu springen, ': cN' oder': cp', um zum vorherigen Fehler zu springen ... – romainl

+0

Verstanden, danke! –

9

Klingt wie Sie ack.vim brauchen:

Dieses Plugin eine Front für das Perl-Modul ist App :: Ack. Ack kann als Ersatz für 99% der Verwendungen von Grep verwendet werden. Dieses Plugin ermöglicht es Ihnen, ack von vim auszuführen und zeigt die Ergebnisse in einem geteilten Fenster an.

Verbrauch:

:Ack [options] {pattern} [{directory}] 
Search recursively in {directory} (which defaults to the current directory) for the {pattern}. 

Dateien, die den Suchbegriff enthalten, wird in dem geteilten Fenster aufgelistet werden, zusammen mit der Zeilennummer des Auftretens, einmal für jedes Auftreten. [Enter] in einer Zeile in diesem Fenster öffnet die Datei und setzt den Cursor auf die entsprechende Zeile.

5

Die :grep Vim Befehl delegiert die Suche zu dem externen grep Werkzeug (oder eine kompatibelen Alternative wie ack über 'grepprg' gesetzt). Alternativ können Sie :vimgrep verwenden, die die Suche in Vim durchführt. Dies ermöglicht die Verwendung der gleichen Vim-ähnlichen regulären Ausdrücke und globalen Muster (wie **/), aber es ist normalerweise langsamer, da jede Datei in einen Vim-Puffer gelesen wird.

Beide Befehle zeigen die Ergebnisse im Quickfix-Fenster an, aus dem Sie zu den Übereinstimmungen navigieren können.

Sie benötigen hierfür keine Plugins, obwohl es mehrere gibt, die versuchen, die Handhabung zu vereinfachen oder verschiedene Suchbefehle zu unterstützen (z.B. die bereits erwähnten ack.vim).