24

我在弄清楚wildignoreVim 中设置的语法时遇到了很多麻烦。

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

我该怎么做呢?

4

4 回答 4

10

具体而言ctrlp.vimwildignore如果您键入:help ctrlp-options并阅读一下,您会发现:

注意 #1:默认情况下,wildignoreg: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+=.*
于 2014-04-11T14:22:47.433 回答
10

正如 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',
    \ }
于 2014-09-16T14:19:12.767 回答
8

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

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

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

例如,我的 Wildignore 看起来像这样

 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

于 2018-04-06T09:28:19.953 回答
4

:help file-pattern。基本上,如果您只想排除任何以点开头的内容,您可以这样做.*

于 2012-08-15T22:46:00.907 回答