Ich bin eine lange Zeit Vimmer. Ich wechsle jedoch immer wieder in die Shell, um Suchen durchzuführen. Das vermeidet mich, die Quickfix-Funktionalität zu verwenden.
Der Hauptgrund für den Wechsel zur Shell ist, dass ich, wenn ich grep von innerhalb von Vim (mit :grep
) verwende, den Fortschritt nicht verfolgen kann.
Da die Codebasis, nach der ich suche, normalerweise groß ist, schätze ich das unmittelbare Feedback sehr.
Es gibt mir eine Chance, herauszufinden, dass mein Suchausdruck falsch ist, bevor die vollständigen Ergebnisse angezeigt wurden.
Damit kann ich die Suche abbrechen, den Ausdruck verfeinern und dann die Suche neu starten.
Jeder Hinweis, wie man dieses Muster in Vim reproduzieren kann, wäre willkommen.
Ich sehe nicht das gleiche vim-Verhalten wie du. Wenn ich :grep
ausführe, sehe ich immer noch die Ergebnisse in vim (nicht im Quickfix), bevor die Suche abgeschlossen ist (aber ich kann nichts tun, bis die Suche abgeschlossen ist).
Ich habe sogar versucht, keine vim-Einstellungen oder Plugins zu verwenden:
%Vor% Wenn das nicht dein Verhalten ist, überprüfe dein grepprg
. Mein ist der Standard:
Wenn ich run grep -e "score" -R /etc
verwende, sehe ich diese Ausgabe in vim:
Es ist möglich, dass Ihr System tee
fehlt oder Ihr vim es nicht benutzt (ich benutze Vim 7.2 unter Ubuntu 10.10). tee
nimmt den übergebenen Text und schreibt ihn in eine Datei und in stdout.
Wenn Sie nach einer Möglichkeit suchen, den Quickfix mit Ihren Suchergebnissen zu aktualisieren und vim während der Suche nicht blockieren zu lassen, können Sie ein Skript schreiben, das:
cgetfile
machen soll) Sie können mein AsyncCommand-Plugin ausprobieren, um Ihren Code zu starten. Es führt das obige aus, außer dass es nur die Datei lädt, wenn die Suche abgeschlossen ist.
Kennen Sie ack.vim überhaupt? Es verwendet nicht das Quickfix-Fenster, sondern einen separaten Puffer in einem Split. Allerdings sind es eher schnellere Ergebnisse, die direkt zum vim-Frame zurückkommen.
Dies liegt möglicherweise an der Pufferung zwischen grep
und tee
, nicht vim selbst. Um diese Theorie zu testen, führen Sie grep von der Befehlszeile aus und leiten Sie die Ausgabe über tee (d. H.% Co_de%). Wenn es sich so verhält, wie Sie es in vim beobachten, tritt eine Pufferung auf.
Um zu umgehen, installieren Sie expect ( grep <pattern> <files> | tee temp.out
auf Ubuntu 10.10) und grepprg auf sudo apt-get install expect-dev
. (Siehe Pufferung in der Pipe deaktivieren ).
Es gibt drei Möglichkeiten, eine Suche in ganzen Projekten durchzuführen.
Systembefehl grep (schnell, aber nicht gut mit der Ouickfix-Liste)
%Vor%Vim interne Grep (langsam, aber eine starke Musterunterstützung)
%Vor%Systemplugin ack (perfekt)
1 install ack
%Vor%2 fügen Sie unter configs zu Ihrer .vimrc
hinzu %Vor%3 Dann kannst du grep verwenden, um ack in vim wie
aufzurufen %Vor%