Есть ли простой способ исключить файлы, для которых FuzzyFinder ищет?

Я использую FuzzyFinder и задавался вопросом, как я могу дать FuzzyFinder указание исключить файлы, которые он ищет. На данный момент я изменил код плагина, но должен быть более простой способ.

Я хочу исключить файлы .class из выскакивания в результате. Любые подсказки/советы о том, как я могу проинструктировать FuzzyFinder пропустить эти файлы?

Ответы

Ответ 1

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

Используйте :help fuf-options для более подробной информации.

Ответ 2

С помощью 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

И в восьмой день Бог был пробужден ужасным шумом, и он создал script, чтобы найти предмет его беспокойства. После этого, найдя ошибки, он ударил их. И это было хорошо еще раз.

Ответ 3

Это самое автоматическое решение, которое будет работать в разных окнах и вкладках с собственным lcd (локальным текущим каталогом).

Поскольку у Vimrc не существует понятия установки исключающих переменных для каждого окна или для каждой вкладки, вы должны reset исключать переменные каждый раз при запуске FufFile или связанных с ним функциях.

Поместите это в свой .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>