2

Я хочу реорганизовать мой каталог vim так:

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

в $HOME/.vimrc:

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

У меня вопрос, как включить все файлы конфигурации Vim в global папку, plugins , папку functions ?

Я нахожу такую функцию:

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

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

call sourceConfig()

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

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()

Использовать до / плагин и после / плагин?

1 ответ1

4

Поскольку globpath() принимает список каталогов, разделенных запятыми, вы можете создавать местоположения следующим образом (я делаю это примитивным способом с дублированием, поскольку вы, кажется, не очень хорошо разбираетесь в Vimscript):

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

Затем этот список может быть передан для генерации списка файлов сценариев, которые затем могут быть получены (обратите внимание, что ваш синтаксис был неправильным, и рекомендуется сделать правильное экранирование):

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

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

Критика подхода

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

Например, ваш перечисленный подход не обрабатывает ftplugins или автозагрузку, что, я уверен, некоторые ваши плагины имеют / будут иметь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .