vim NERDTreeIgnore用于特定子目录中的特定文件

时间:2016-05-22 23:01:24

标签: javascript vim nerdtree

我正在使用https://github.com/MarcWeber/vim-addon-local-vimrc来设置项目特定的vim设置。

现在我想使用NERDTreeVimIgnore来忽略只在子目录src中的javascript文件。

我试过了:

let NERDTreeIgnore = ['^src*\.js$']

但没有成功。

let NERDTreeIgnore = ['\.js$']

忽略所有js文件,但我只需要在src及其递归子目录中忽略它们。

任何人都可以给我一个提示吗?

1 个答案:

答案 0 :(得分:0)

不幸的是,NERDTreeIgnore选项似乎只查看最后一个路径组件(文件的基本名称)。这意味着您将无法过滤掉这样的特定文件。

我能想到的唯一方法是使用NERDTreeAddPathFilter()函数:https://github.com/scrooloose/nerdtree/blob/15445be5fb2559829ac7a1f05af5d713586e8ec9/doc/NERD_tree.txt#L1175

您可以在nerdtree_plugin目录中创建一个vim文件,例如~/.vim/nerdtree_plugin/path_filters.vim。它将包含类似文档中的示例:

call NERDTreeAddPathFilter('MyFilter')

function! MyFilter(params)
  " params is a dict containing keys: 'nerdtree' and 'path' which are
  " g:NERDTree and g:NERDTreePath objects
  " return 1 to ignore params['path'] or 0 otherwise

  " You could do something like this, then:
  let filename = fnamemodify(a:params.path.str(), ':p')
  return filename =~ 'src/myproject/.*\.js'
endfunction

如果遇到麻烦,您可能需要在有关编写函数的文档中阅读一些内容。