Привет, коллеги. Есть в Вим такая встроенная возможность: создавать самодостаточные самоустанавливающиеся архивы для скриптов и прочих разработок. Так-то мы создаем файл или несколько: скрипты, раскладки клавиатуры, файлы с данными, словари, справку ко всему этому, и раскладываем всё это добро по разным каталогам в .vim или ещё куда-нибудь. Но если мы хотим поделиться с другими, то расписать, куда что класть, может быть не столь просто, особенно если учесть разнообразие систем и структур каталогов. К тому же потом установленное можно чисто удалить, что не всегда просто, если ставить вручную или, особенно, с помощью систем вроде configure/make
Эта возможность называется Vimball, что можно перевести как "комок" или "клубок" Вим. Это один файл, в который запрессовано всё, что нужно. Обычно имеет расширение .vmb.
Это и для себя может быть полезно: сделали что-то ценное — создайте Вимболл и закиньте в облако на вечное хранение. На новом компьютере или на новой системе быстренько развернете всё, и не надо запоминать, что где лежало. Небесполезная вещь.
Имея такой файл, вы открываете его в Вим, выполняете как скрипт:
:source %
и закрываете. Как на картинке — не будет.
Всё будет установлено куда следует. Используется первый доступный каталог из опции runtimepath, в котором и перечислены каталоги. Можно посмотреть, какой каталог доступен: echo &rtp.
Чтобы удалить установленное, есть команда :RmVimball
Для создания Вимболла предназначена команда :MkVimball. Она получает диапазон строк, на которых должны быть имена файлов, составляющих ваш пакет. Файлов, лежащих "где следует", чтобы Вим их нашел. И надо указать имя будущего файла-архива, можно без расширения. Например, вы пишете:
old_russian.vim
old_russian.txt
Первый лежит в .vim/langmap, второй там, где положено лежать справке.
На первых двух строках и отдаете команду
:1,2MkVimball old_russian
чтобы получить old_russian.vmb, готовый к установке.
Восклицательный знак позволяет перезаписать уже существующий архив. Он же настаивает на включении слешей — обычно на них команда ругается.
Есть несколько переменных, которые можно задавать для контроля. Например, можно явно указать, куда устанавливать всё добро.
Можно посмотреть, что в архиве есть, командой Vimballlist. Ещё и длины файлов выведутся.
Можно вручную запустить установку, командой UseVimball. Именно эта команда и выполнится, если запустить сам файл на выполнение. С точки зрения безопасности, наверное, чуть безопаснее запустить самому: это хоть лишнего не выполнит. Но не безопаснее, чем заглянуть в файл и посмотреть, с чего он начинается. Кстати, первой строкой обязательно должно быть
" Vimball Archiver by Charles E. Campbell
Можно запретить запуск Вимболлов. Для этого задайте в .vimrc две переменные:
let g:loaded_vimballPlugin= 1
let g:loaded_vimball= 1
Если файлов много и длинные, то они будут сжаты pkzip, но если мало и маленькие, то вимболл будет весь текстовый.
Очень просто, очень удобно. Удачи, коллеги!