2010-11-09 8 views
14

Używam FuzzyFinder i zastanawiałem się, jak mogę polecić FuzzyFinder, aby wykluczyć pliki, które szuka. Na razie zmodyfikowałem kod wtyczki, ale musi być łatwiejszy sposób.Czy istnieje prosty sposób na wykluczenie plików, dla których wyszukiwany jest FuzzyFinder?

Chcę wykluczyć pliki .class z pojawiały się w wyniku. Jakieś wskazówki/wskazówki, w jaki sposób mogę poinstruować program FuzzyFinder, aby pomijał te pliki? Aby uzyskać więcej informacji, należy użyć numeru

Odpowiedz

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

.

+0

Dzięki za odpowiedź, jestem w trakcie nauki moją drogę vim i jego wtyczek. – Marco

+0

Po wdrożeniu wtyczki należy również wdrożyć dokument i uruchomić ': helptags/path/to/the/doc/folder', prawie wszystkie dobre wtyczki mają przyzwoitą dokumentację tutaj! – Benoit

+5

Zapamiętaj '\ v' na początku, jeśli chcesz wyrażenia regularne! Używaj również 'g: fuf_coveragefile_exclude', jeśli używasz' FufCoverageFile'. – robbrit

5

Dzięki 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 

A ósmego dnia Bóg obudził straszny hałas, i robił utworzyć skrypt, aby zlokalizować przedmiot jego zakłóceń. Po znalezieniu błędów, on ich uderzył. I znowu było dobrze.

+2

To zdecydowanie działa z '.vimrc' jeśli źródło .vimrc po ustawieniu' lcd' (lokalny katalog bieżący), ale jeśli przełączasz karty lub okna do innego projektu z innym 'lcd', musisz źródło swojego '.vimrc' i powoduje globalną zmianę zmiennej. Czy istnieje sposób zrobić to za każde okno z różnymi 'lcd's? – Neil

+0

Upewnij się, że ustawisz również 'g: fuf_file_exclude' i' g: fuf_dir_exclude' na zmienną 'ignore'. Spowoduje to, że 'FufFile' i' FufDir' działają zgodnie z oczekiwaniami. – Neil

+0

Dzięki. Jeden błąd - powinien przeskakiwać nad pustymi liniami – ygrek

1

Jest to najbardziej automatyczne rozwiązanie, które będzie działać w różnych oknach i zakładkach, które mają własny lcd (lokalny katalog bieżący).

Od vimrc doensn't mieć pojęcie ustawienie wyklucza zmienne per-per-oknie lub karcie, trzeba zresetować zmienne wykluczają się czas biegu FufFile lub podobne funkcje.

umieścić to w swojej .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

To jest naprawdę fajne, ale z jakiegoś powodu nie wydaje się, żeby zadziałało, gdy zadzwonię po raz pierwszy do FF. Mam bardzo duże drzewo plików (i nie muszę indeksować zależności), a każde pierwsze ładowanie trwa prawie minutę. Czy jest jakiś sposób, aby uruchomić ten program, zanim program Fuzzy Finder spróbuje w ogóle utworzyć indeks? – counterbeing