使NERDTree和CtrlP忽略顶级供应商目录

时间:2013-11-14 08:27:19

标签: vim

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

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

我的野生动物设置如下:

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

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

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

谢谢。

2 个答案:

答案 0 :(得分:2)

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

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

由于我不想在'wildignore'和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

答案 1 :(得分:1)

将此添加到您的.vimrc:

let g:NERDTreeRespectWildIgnore = 1