2009-07-07 4 views
17

Welche Optionen gibt es, um in VIM wirklich schnell in Dateien suchen zu finden?Schnelles Finden in Dateien für VIM?

Unsere Codebasis ist groß genug, dass die Suche von einem Index abarbeiten muss. grep/vimgrep/etc sind zu langsam.

Indexierung muss nicht besonders schnell sein; Ich kann über Nacht indexieren.

Danke,

[EDIT] Ich bin auch in einer Windows-Umgebung arbeiten.

Antwort

9

Wenn es Quellcode ist (und nicht als Volltextsuche), ctags dann mit dem TagList Plugin sollte gut für Ihre Bedürfnisse arbeiten. Siehe zum Beispiel:

http://www.thegeekstuff.com/2009/04/ctags-taglist-vi-vim-editor-as-sourece-code-browser/

EDIT: TagList und ctags wird auch unter Windows arbeiten (das ist, was ich verwende). Siehe TagList-Installationsseite und FAQ. Die folgenden Links könnten sich als nützlich erweisen:

Es gibt auch ein TagList Forum, wo Sie weitere Hilfe erhalten können:

http://tech.groups.yahoo.com/group/taglist/

I richte es ein o n meine Windows-Maschine eine Weile zurück, aber ich erinnere mich nicht an irgendwelche Probleme.

1

Ich weiß nicht, wie ich das gefunden, aber sieht aus wie jemand ein Plugin für google desktop

4

geschrieben Wenn Sie mit einem großen Code-Basis arbeiten, dann könnte es Zeit für eine leistungsfähigere Lösung zu suchen sein als herkömmliche Werkzeuge. OpenGrok ist eine sehr schnelle Quellcode-Such- und Querverweis-Engine. Neben seiner hervorragenden Leistung integriert es unter anderem die Versionskontrollsoftware Subversion, Mercurial und ClearCase. Es klingt viel wie etwas, das Sie verwenden könnten.

Wenn Sie möchten, dass OpenGrok in Vim verwendet wird, könnten Sie einfach eine vim-Funktion schreiben, die system() aufrufen würde, um die Suche für Sie zu starten. Um mehr über das Schreiben neuer vim-Befehle zu erfahren, suchen Sie in vim nach :help 40.2.

Ich hoffe, das ist, was Sie gesucht haben.

5

Etwas, das ich benutze, aber nicht durch vim ist ack: http://betterthangrep.com/

Es ist ein Perl-basiertes Tool, und es sollte in Windows einsetzbar sein.

+0

Das funktioniert sehr gut für mich. Wir haben Tausende von Dateien und ein normales grep (oder sogar ack) kann mehrere Sekunden dauern. Aber etwas wie ': Ack --ruby * something *' wird im Allgemeinen in ein oder zwei Sekunden zurückkommen, da es nur eine Teilmenge von Dateien durchsucht –

-1

können Sie versuchen, diese

: vimgrep/etwas/* /

und vergessen Sie nicht, Suchergebnis-Fenster zu öffnen, nachdem

: cw

+2

Die Frage besagt, dass vimgrep zu langsam für ihn ist .... – 0xc0de

0

Versuchen Sie, ich nstall https://github.com/mileszs/ack.vim, http://beyondgrep.com/,

dann einen Link machen

ln -s /usr/bin/ack-grep /usr/bin/ack 

und

noremap <C-f> :copen<CR>:Ack -aQi --ignore-dir someignoringdir 

zu Ihrem .vimrc hinzufügen, nachdem Sie in Dateien durch Strg + F finden, genießen

_ /| 
\'o.O' 
=(___)= 
    U 
+0

Nicht sicher, ob Das wird schneller sein als in Grep oder Vimgrep eingebaut. – sixtyfootersdude