Como incluir todos os arquivos de configuração do Vim em alguma pasta?

2

Eu quero reorganizar meu diretório vim para ficar assim:

- dotfiles
  |- vim
  |  |- config
  |  |  |- global
  |  |  |  |- basic.vim
  |  |  |  |...
  |  |  |- plugins
  |  |  |  |- ctrl-p.vim
  |  |  |  |...
  |  |  |- functions
  |  |  |  |...
  |  |  |...
  |  |- bootstrap.vimrc

em $HOME/.vimrc :

if isdirectory(expand('$HOME/dotfiles/vim'))
  source $HOME/dotfiles/vim/bootstrap.vimrc
endif

A minha pergunta é, como incluir todos os arquivos de configuração do Vim na pasta global , plugins , functions ?

Eu acho uma função como esta:

function! SourceConfig()
  let file_list = split(globpath('$HOME/dotfiles/vim/', '.vim'), '\n')

  for file in file_list
    execute('source '.file)
  endfor
endfunction

call sourceConfig()

Mas, de acordo com a pasta de carregamento especificada, como modificar a função func, faça com que a globpath seja uma array ou algo assim, como abaixo.

let $path=[global, plugins, functions] // this will be source files in turn.

function! SourceConfig()
  let file_list = split(globpath($path, '.vim'), '\n')

  for file in file_list
    execute('source '.file)
  endfor
endfunction

call sourceConfig()

Usar antes / plugin e depois / plugin?

    
por Sam 14.11.2014 / 10:46

1 resposta

4

Como globpath() tem uma lista separada por vírgulas de diretórios, você pode construir os locais como este (estou fazendo isso de uma maneira primitiva com duplicação, como você parece não ser muito versado em Vimscript):

function! sourceConfig()
  let path = $HOME  . '/dotfiles/vim/config/global'
  let path .= ',' . $HOME  . '/dotfiles/vim/config/plugins'
  let path .= ',' . $HOME  . '/dotfiles/vim/config/functions'

Então, essa lista pode ser passada para gerar a lista de arquivos de script, que podem então ser originados (note que sua sintaxe estava errada, e é recomendado fazer um escape apropriado):

  let file_list = split(globpath(path, '*.vim'), '\n')

  for file in file_list
    execute 'source' fnameescape(file)
  endfor
endfunction

Crítica de abordagem

Você não mencionou a motivação para essa reorganização, mas recomendo que recomende seguir os layouts de configuração padrão , o "all under .vim" ou o "diretório de pacotes separados por plug-in".

Por exemplo, sua abordagem listada não lida com ftplugins ou autoload , o que eu tenho certeza que alguns dos seus plugins terão / terão.

    
por 14.11.2014 / 11:17