Как установить все файлы 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
Ответы
Ответ 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