2

我希望 NERDTree 和 CtrlP 都忽略(不显示也不索引)顶级供应商目录。

但是,我确实希望这两个插件(以及将来的任何其他插件)都考虑供应商目录下而不是项目顶层的文件(例如 app/assets/javascripts/vendor)。

我的 wildignore 设置如下:

wildignore+=*.o,*.obj,.git,*.rbc,*.class,.svn,coverage/*,vendor

这使得供应商目录无论在哪里都被忽略了。

你能推荐一个解决方案吗?

谢谢你。

4

2 回答 2

4

将此添加到您的 .vimrc 中:

let g:NERDTreeRespectWildIgnore = 1
于 2019-02-06T10:19:47.357 回答
2

对于 NERDTree,您需要将其添加到g:NERDTreeIgnore

:let g:NERDTreeIgnore=['\~$', 'vendor']

由于我不喜欢在'wildignore'NERDTree 和 NERDTree 中维护排除列表,因此我使用以下 scriptlet 自动从前者设置后者:

" Use the 'wildignore' and 'suffixes' settings for filtering out files.
function! s:FileGlobToRegexp( glob )
    " The matching is done against the sole file / directory name.
    if a:glob =~# '^\*\.'
        return '\.' . a:glob[2:] . '$'
    else
        return '^' . a:glob . '$'
    endif
endfunction
function! s:SuffixToRegexp( suffix )
    return escape(v:val, '.~') . "$"
endfunction
let g:NERDTreeIgnore =
\   map(split(&wildignore, ','), 's:FileGlobToRegexp(v:val)') +
\   map(split(&suffixes, ','), 's:SuffixToRegexp(v:val)')
delfunction s:SuffixToRegexp
delfunction s:FileGlobToRegexp

编辑

但是,这将全局过滤掉vendor目录。目前无法仅对顶层执行此操作,因为 NERDTree 仅针对文件的基本名称执行过滤器比较:

self.getLastPathComponent(0) =~# pat
于 2013-11-14T08:35:52.293 回答