我在弄清楚wildignore
Vim 中设置的语法时遇到了很多麻烦。
假设我希望我的文件查找器插件(我使用Ctrlp,它使用wildignore
)不搜索隐藏的文件和文件夹,即前缀为.
.
我该怎么做呢?
具体而言ctrlp.vim
,wildignore
如果您键入: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+=.*
正如 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',
\ }
因为标题与最佳答案不对应,所以她是我的,对应的不是 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
见:help file-pattern
。基本上,如果您只想排除任何以点开头的内容,您可以这样做.*
。