2010-11-09 8 views
14

Estoy usando FuzzyFinder y me preguntaba cómo podría ordenar a FuzzyFinder que excluyera los archivos que busca. Por ahora he modificado el código del complemento, pero debe haber una manera más fácil.¿Existe alguna manera fácil de excluir archivos para los que FuzzyFinder busca?

Quiero excluir que los archivos .class aparezcan en el resultado. ¿Alguna pista/sugerencia sobre cómo puedo ordenar a FuzzyFinder que omita estos archivos?

Respuesta

20
let g:fuf_file_exclude = '\v\~$|\.o$|\.exe$|\.bak$|\.swp$|\.class$' 

Use :help fuf-options para obtener más detalles.

+0

Gracias por la respuesta, todavía estoy aprendiendo mi camino alrededor vim y sus complementos. – Marco

+0

Cuando implementa un complemento, también implementa el documento y ejecuta ': helptags/path/to/the/doc/folder', ¡casi todos los buenos complementos tienen una documentación decente aquí! – Benoit

+5

¡Recuerda el '\ v' al comienzo si quieres expresiones regulares! También use 'g: fuf_coveragefile_exclude' si está usando' FufCoverageFile'. – robbrit

5

Con la ayuda de Benoit:

"FuzzyFinder should ignore all files in .gitignore 
let ignorefile = ".gitignore" 
if filereadable(ignorefile) 

    let ignore = '\v\~$' 
    for line in readfile(ignorefile) 
    let line = substitute(line, '\.', '\\.', 'g') 
    let line = substitute(line, '\*', '.*', 'g') 
    let ignore .= '|^' . line 
    endfor 

    let g:fuf_coveragefile_exclude = ignore 
endif 

Y en el octavo día Dios se despertó por un ruido terrible, y lo hizo crear una secuencia de comandos para localizar el tema de su perturbación. Al encontrar bichos, los golpeó. Y fue bueno una vez más.

+2

Esto definitivamente funciona desde su '.vimrc' si obtiene su .vimrc después de configurar' lcd' (directorio actual local), pero si cambia las pestañas o ventanas a otro proyecto con un 'lcd' diferente, tiene que volver a fuente su '.vimrc' y reduce la variable globalmente. ¿Hay alguna forma de hacer esto por ventana con diferentes 'lcd's? – Neil

+0

Asegúrese de establecer 'g: fuf_file_exclude' y' g: fuf_dir_exclude' en la variable 'ignore' también. Esto hará que 'FufFile' y' FufDir' funcionen como se esperaba. – Neil

+0

Gracias. Una corrección de error: debe omitir las líneas vacías – ygrek

1

Esta es la solución más automática que funcionará en diferentes ventanas y pestañas que tienen su propio lcd (directorio actual local).

Desde vimrc doensn't tienen el concepto de establecimiento de excluir las variables per-per-ventana o pestaña, tiene que restablecer las variables excluir cada vez que su ejecución FufFile o funciones relacionadas.

poner esto en su .vimrc:

" FuzzyFinder 
" ----------------------------------------------------------------------------- 
function! FufSetIgnore() 

    let ignorefiles = [ $HOME . "/.gitignore", ".gitignore" ] 
    let exclude_vcs = '\.(hg|git|bzr|svn|cvs)' 
    let ignore = '\v\~$' 

    for ignorefile in ignorefiles 

     if filereadable(ignorefile) 
      for line in readfile(ignorefile) 
       if match(line, '^\s*$') == -1 && match(line, '^#') == -1 
        let line = substitute(line, '^/', '', '') 
        let line = substitute(line, '\.', '\\.', 'g') 
        let line = substitute(line, '\*', '.*', 'g') 
        let ignore .= '|^' . line 
       endif 
      endfor 
     endif 

     let ignore .= '|^' . exclude_vcs 
     let g:fuf_coveragefile_exclude = ignore 
     let g:fuf_file_exclude = ignore 
     let g:fuf_dir_exclude = ignore 

    endfor 
endfunction 

# Bonus: My custom key mappings for FuzzyFinder 
# Calls the function to set the exclude variables, then runs FuzzyFinder 
nn <Tab> :call FufSetIgnore() <BAR> :FufFile<CR> 
nn <S-Tab> :call FufSetIgnore() <BAR> :FufFile **/<CR> 
nn <F3> :call FufSetIgnore() <BAR> :FufFile **/<CR> 
+0

Esto es genial, pero por alguna razón, parece que no funciona la primera vez que llamo a FF. Tengo un árbol de archivos muy grande (y no necesito indexar las dependencias), y cada primera carga demora casi un minuto. ¿Hay alguna forma de ejecutar esta ejecución antes de que el buscador difuso intente construir un índice? – counterbeing

Cuestiones relacionadas