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

Faw*_*es5 20 vim

我在查找wildignoreVim中的设置语法时遇到了很多麻烦.

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

我该怎么做呢?

Ben*_*enC 8

关于ctrlp.vim并且wildignore具体来说,如果您输入: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+=.*
Run Code Online (Sandbox Code Playgroud)

  • 我曾尝试添加wildignore,custom_ignore,但未设置ctrl_user_command。终于找到了类似问题的另一个答案@BenC。Ctrlp缓存结果,因此一旦找到要忽略的文件,无论您将其放入wildignore / custom忽略中的内容如何,​​它们都将始终显示,直到清除了ctrlp缓存。http://stackoverflow.com/questions/21017857/ctrlp-still-searches-the-ignored-directory (2认同)

Jor*_*dge 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',
    \ }
Run Code Online (Sandbox Code Playgroud)


Con*_*ner 5

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

  • 没关系,我已经弄清楚了,谢谢你的信息。设置类型:wildignore+=/home/USERNAME/.* (2认同)
  • @Fawkes5:你也可以尝试`:set wildignore+=.*`。 (2认同)

pas*_*oop 5

因为标题与最佳答案不符,所以她是我的,她的回答不是对ctrlp而是对wildignore。基于 /sf/answers/40592051/

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

:set wildignore=*.o,*~,*.pyc
Run Code Online (Sandbox Code Playgroud)

例如,我的狂野表情看起来像这样

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

我将它用于ctrlp和NERDTree