我如何在Vim中使用'wildignore'?

时间:2012-08-15 22:32:28

标签: vim

我在查找Vim中wildignore设置的语法时遇到了很多麻烦。

假设我想要我的文件查找器插件(我使用Ctrlp,它使用wildignore)不搜索隐藏的文件和文件夹,即带有.前缀的文件和文件夹

我将如何做到这一点?

4 个答案:

答案 0 :(得分:8)

正如BenC指出的那样,如果您将CtrlP与外部搜索工具一起使用,Wildignore可能不是忽略文件的最佳方式。相反,您可以使用CtrlP的“custom_ignore”指令,如其文档中所述:

let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$'
let g:ctrlp_custom_ignore = {
    \ 'dir':  '\v[\/]\.(git|hg|svn)$',
    \ 'file': '\v\.(exe|so|dll)$',
    \ 'link': 'SOME_BAD_SYMBOLIC_LINKS',
    \ }

答案 1 :(得分:6)

特别关注ctrlp.vimwildignore,如果您输入:help ctrlp-options并阅读一下,您会发现:

  

注意#1:默认情况下, wildignore g:ctrlp_custom_ignore   当 globpath()用于扫描文件时应用,因此这些选项   使用 g:ctrlp_user_command 定义的命令时不应用   被使用。

因此,您可能需要unlet g:ctrlp_user_command(可能设置为默认命令)才能实际使用wildignore。例如,在~/.vimrc中添加:

if exists("g:ctrl_user_command")
    unlet g:ctrlp_user_command
endif
set wildignore+=.*

答案 2 :(得分:4)

请参阅:help file-pattern。基本上,如果您只想排除任何以点开头的内容,您可以执行.*

答案 3 :(得分:1)

因为标题与最佳答案不对应,所以她是我的核心,而不是ctrlp而是toignignore。基于 https://stackoverflow.com/a/579886/1170940

Vim将忽略选项wildignore中指定的文件模式,因此您可以这样设置它们:

:set wildignore=*.o,*~,*.pyc

例如,我的野生动物就像这样

 set wildignore+=*/node_modules/*,_site,*/__pycache__/,*/venv/*,*/target/*,*/.vim$,\~$,*/.log,*/.aux,*/.cls,*/.aux,*/.bbl,*/.blg,*/.fls,*/.fdb*/,*/.toc,*/.out,*/.glo,*/.log,*/.ist,*/.fdb_latexmk

我将它用于ctrlp和NERDTree