2010-11-09 5 views

Antwort

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

Verwenden Sie :help fuf-options für weitere Details.

+0

Danke für die Antwort, ich lerne immer noch meinen Weg um vim und seine Plugins. – Marco

+0

Wenn Sie ein Plugin bereitstellen, stellen Sie auch das Dokument bereit und führen Sie ': helptags/Pfad/zu/dem/doc/Ordner 'aus, fast alle guten Plugins haben hier eine ordentliche Dokumentation! – Benoit

+5

Merken Sie sich das '\ v' am Anfang, wenn Sie reguläre Ausdrücke wollen! Verwenden Sie auch 'g: fuf_coveragefile_exclude', wenn Sie' FufCoverageFile' verwenden. – robbrit

5

Mit Hilfe von 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 

Und am achten Tag war Gott von einem schrecklichen Lärm geweckt, und er hat ein Skript erstellen, das Thema seiner Störung zu lokalisieren. Daraufhin fand er Fehler, er schlug sie. Und es war wieder einmal gut.

+2

Dies funktioniert definitiv von Ihrem '.vimrc', wenn Sie Ihre .vimrc nach dem Setzen des' lcd' (lokales aktuelles Verzeichnis) beziehen, aber wenn Sie Tabs oder Fenster zu einem anderen Projekt mit einem anderen 'lcd' wechseln, müssen Sie Quelle Ihre '.vimrc' und es klumpt die Variable global. Gibt es eine Möglichkeit, dies pro Fenster mit verschiedenen 'LCD's zu tun? – Neil

+0

Stellen Sie sicher, dass 'g: fuf_file_exclude' und' g: fuf_dir_exclude' ebenfalls auf die Variable 'ignore' gesetzt sind. Dies wird dazu führen, dass "FufFile" und "FufDir" wie erwartet funktionieren. – Neil

+0

Danke. Ein Bugfix - sollte leere Zeilen überspringen – ygrek

1

Dies ist die automatischeste Lösung, die in verschiedenen Fenstern und Registerkarten mit eigenen lcd (lokales aktuelles Verzeichnis) funktioniert.

Seit vimrc doensn't haben das Konzept der Variablen Einstellung ausschließen pro-Fenster oder pro-Registerkarte, müssen Sie die Variablen jedes Mal, wenn Ihr Lauf FufFile oder verwandte Funktionen ausschließen zurückgesetzt.

Diese in Ihrem .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

Das ist wirklich cool, aber aus irgendeinem Grund scheint es nicht wirklich funktionieren, das erste Mal, wenn ich FF anrufe. Ich habe einen sehr großen Dateibaum (und ich muss die Abhängigkeiten nicht indizieren), und jeder erste Ladevorgang dauert fast eine Minute. Gibt es eine Möglichkeit, dies auszuführen, bevor der Fuzzy-Finder versucht, einen Index zu erstellen? – counterbeing

Verwandte Themen