【问题标题】:Is there an easy way to exclude files for which FuzzyFinder searches?有没有一种简单的方法可以排除 FuzzyFinder 搜索的文件?
【发布时间】:2010-11-09 11:10:24
【问题描述】:

我正在使用 FuzzyFinder,想知道如何指示 FuzzyFinder 排除它搜索的文件。现在我已经修改了插件代码,但必须有更简单的方法。

我想排除结果中弹出的 .class 文件。关于如何指示 FuzzyFinder 跳过这些文件的任何提示/提示?

【问题讨论】:

    标签: vim fuzzyfinder


    【解决方案1】:
    let g:fuf_file_exclude = '\v\~$|\.o$|\.exe$|\.bak$|\.swp$|\.class$'
    

    使用:help fuf-options了解更多详情。

    【讨论】:

    • 感谢您的回复,我仍在学习 vim 及其插件的方法。
    • 部署插件时,也要部署文档,然后运行:helptags /path/to/the/doc/folder,几乎所有好的插件都在这里有不错的文档!
    • 如果您想要正则表达式,请记住开头的\v!如果您使用的是FufCoverageFile,也请使用g:fuf_coveragefile_exclude
    【解决方案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
    

    在第八天,上帝被一阵可怕的噪音惊醒,他确实创建了一个脚本来定位他的干扰对象。于是,他发现了虫子,就把它们击杀了。它再次变得很好。

    【讨论】:

    • 如果您在设置lcd(本地当前目录)后获取.vimrc,那么这绝对适用于您的.vimrc,但是如果您将选项卡或窗口切换到具有不同lcd 的另一个项目,您必须重新获取您的.vimrc,它会在全局范围内破坏变量。有没有办法用不同的lcds 对每个窗口执行此操作?
    • 确保将g:fuf_file_excludeg:fuf_dir_exclude 也设置为ignore 变量。这将使FufFileFufDir 按预期工作。
    • 谢谢。一个错误修复 - 应该跳过空行
    【解决方案3】:

    这是最自动化的解决方案,适用于具有自己的lcd(本地当前目录)的不同窗口和选项卡。

    由于 Vimrc 没有按窗口或按标签设置排除变量的概念,因此每次运行 FufFile 或相关函数时都必须重置排除变量。 p>

    把这个放在你的.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>
    

    【讨论】:

    • 这真的很酷,但由于某种原因,我第一次调用 FF 时它似乎并没有真正起作用。我有一个非常大的文件树(我不需要索引依赖项),每次第一次加载几乎需要一分钟。在模糊查找器尝试建立索引之前,有什么方法可以让这个运行?
    猜你喜欢
    • 2023-04-03
    • 2011-04-22
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多