vim NERDTreeIgnore для определенных файлов в определенной подкаталоге

я использую https://github.com/MarcWeber/vim-addon-local-vimrc для установки конкретных параметров vim проекта.

теперь я хочу использовать NERDTreeVimIgnore, чтобы игнорировать файлы javascript только в подкаталоге src.

я пробовал это:

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

но безуспешно.

let NERDTreeIgnore = ['.js$']

игнорирует все файлы js, но мне нужно, чтобы они игнорировались только в src и его рекурсивных подкаталогах.

кто-нибудь может мне подсказать?

1 ответ

  1. К сожалению, кажется, что NERDTreeIgnoreопция смотрит только на последний компонент пути (базовое имя файла). Это означает, что вы не сможете отфильтровать определенные файлы.

    Единственный способ, который я могу придумать, это использовать NERDTreeAddPathFilter()функцию: https://github.com/scrooloose/nerdtree/blob/15445be5fb2559829ac7a1f05af5d713586e8ec9/doc/NERD_tree.txt#L1175

    Например, можно создать vim-файл в nerdtree_pluginкаталоге ~/.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
    

    Возможно, вам придется немного почитать в документации по написанию функций и тому подобное, если у вас возникнут проблемы.