我在使用Vim时,对于wildignore
设置的语法非常困惑。
假设我希望我的文件查找插件(我使用Ctrlp,它使用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.vim
和 wildignore
,如果你输入 :help ctrlp-options
并仔细阅读,你会发现:
注意事项 #1:默认情况下,只有当使用 globpath() 扫描文件时,wildignore 和 g:ctrlp_custom_ignore 才会生效,因此这些选项在使用定义了 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+=.*
因为标题没有对应的最佳答案,这里是我的答案,它不是关于ctrlp而是关于wildignore。根据https://dev59.com/43RB5IYBdhLWcg3wl4EQ#579886
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
请参见:help file-pattern
。基本上,如果您只想排除以点号开头的任何内容,可以使用.*
。
:set wildignore+=.*
。 - ib.