2009-07-07 15 views
17

¿Cuáles son algunas opciones para obtener una búsqueda 'Buscar en archivos' realmente rápida en VIM?Fast 'Buscar en archivos' para VIM?

Nuestra base de código es lo suficientemente grande como para que la búsqueda necesite funcionar en un índice. grep/vimgrep/etc son demasiado lentos.

La indexación no necesita ser particularmente rápida; Puedo indexar de la noche a la mañana.

Gracias,

[EDIT] También estoy trabajando en un entorno Windows.

Respuesta

9

Si se trata de código fuente (en lugar de búsqueda de texto completo), entonces los ctags con el complemento TagList deberían funcionar bien para sus necesidades. Ver, por ejemplo:

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

EDIT: taglist y ctags funcionarán en Windows, así (eso es lo que yo uso). Vea la página de instalación de TagList y preguntas frecuentes. Los siguientes enlaces pueden ser útiles:

También hay un foro taglist donde se puede obtener más ayuda:

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

I configurarlo en mi máquina de Windows hace un tiempo, pero no recuerdo haber tenido ningún problema.

1

No sé cómo me encontré con esto, pero parece que alguien ha escrito un plugin para google desktop

4

Si está trabajando con una gran base de código, entonces podría ser el momento de buscar una solución más potente que las herramientas convencionales. OpenGrok es un motor muy rápido de búsqueda de código fuente y referencia cruzada. Además de su gran rendimiento, se integra con Subversion, Mercurial y ClearCase, entre otros software de control de revisiones de origen. Suena muy parecido a algo que podrías usar.

Si desea soporte para usar OpenGrok desde dentro de Vim, puede escribir fácilmente una función vim que llame al system() para comenzar la búsqueda. Para leer más acerca de cómo escribir nuevos comandos vim, busque :help 40.2 dentro de vim.

Espero que sea eso lo que estaba buscando.

5

Algo que yo uso, pero no a través de vim, es ack: http://betterthangrep.com/

Es una herramienta basada en Perl, y debe ser utilizable en Windows.

+0

Esto funciona muy bien para mí. Tenemos miles de archivos, y un grep normal (o incluso ack) puede tomar decenas de segundos. Pero algo como ': Ack --ruby * something *' generalmente volverá en uno o dos segundos, ya que está buscando solo un subconjunto de archivos –

-1

Puede probar este

: vimgrep/algo/* /

y no se olvide de abrir la ventana de resultados de búsqueda después de

: cw

+2

La pregunta dice que vimgrep es demasiado lento para él .... – 0xc0de

0

Intenta i nstall https://github.com/mileszs/ack.vim, http://beyondgrep.com/,

luego hacer un enlace

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

y añadir

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

a su .vimrc, después de que usted puede encontrar en los archivos a través de Ctrl + F, disfrutar de

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

No estoy seguro si esto será más rápido que grep incorporado o vimgrep. – sixtyfootersdude