Есть ли простой способ исключить файлы, которые ищет FuzzyFinder? - PullRequest
14 голосов
/ 09 ноября 2010

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

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

Ответы [ 3 ]

20 голосов
/ 09 ноября 2010
let g:fuf_file_exclude = '\v\~$|\.o$|\.exe$|\.bak$|\.swp$|\.class$'

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

5 голосов
/ 01 февраля 2013

С помощью Бенуа:

"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

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

1 голос
/ 26 июня 2013

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

Поскольку в Vimrc отсутствует концепция настройки исключаемых переменных для каждого окна или для каждой вкладки , вам придется сбрасывать исключающие переменные каждый раз при выполнении 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>
...