Подтвердить что ты не робот

Как установить все файлы vim в каталог

Я разделил свой .vimrc на несколько файлов и поместил их в ~/vimfiles/vimrc.d/.

В настоящее время я размещаю каждый файл в этом каталоге с использованием точного имени:

source ~/vimfiles/vimrc.d/file1.vim
source ~/vimfiles/vimrc.d/file2.vim

и др.

Как создать цикл для всех файлов в этом каталоге, поэтому я мог бы только сделать такой цикл в моем .vimrc:

for file in ~/vimfiles/vimrc.d/*.vim
   source file
enfor
4b9b3361

Ответ 1

Как mb14 уже сказано, если вы поместите их в ~/.vim/plugin, они будут автоматически отправлены. Однако для информации, если вы хотите указать все файлы в каталоге vimrc.d, вы можете сделать это (требуется относительно недавний Vim):

for f in split(glob('~/vimfiles/vimrc.d/*.vim'), '\n')
    exe 'source' f
endfor

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

Ответ 2

Вы можете просто поместить свои файлы в каталог плагинов (~/.vim/plugin). Они будут автоматически загружены.

Ответ 3

mb14 дал вам лучший ответ. Вы хотите, чтобы что-то автоматически выполнялось? Затем используйте стандартную организацию: здесь подключаемый модуль/подкаталог.

В противном случае :runtime был бы вашим другом:

:runtime! vimrc.d/*.vim
  • :source лает, когда его параметр не существует, а :runtime тихо ничего не генерирует.
  • :source может содержать только один файл, а :runtime! может выводить любое количество файлов.
  • :source принимает абсолютное имя пути или путь к текущему каталогу, в то время как :runtime принимает имя пути относительно параметра 'runtimepath', что не должно быть проблемой, если вы соблюдаете соглашения vim.

Ответ 4

Пример от DrAl не помог мне, вот как я его достиг:

for fpath in split(globpath('~/.vimrc.d/', '*.vim'), '\n')
  exe 'source' fpath
endfor