Найти тему
Блокнот математика

Рубрика "Секреты Вим". Vimballs

Привет, коллеги. Есть в Вим такая встроенная возможность: создавать самодостаточные самоустанавливающиеся архивы для скриптов и прочих разработок. Так-то мы создаем файл или несколько: скрипты, раскладки клавиатуры, файлы с данными, словари, справку ко всему этому, и раскладываем всё это добро по разным каталогам в .vim или ещё куда-нибудь. Но если мы хотим поделиться с другими, то расписать, куда что класть, может быть не столь просто, особенно если учесть разнообразие систем и структур каталогов. К тому же потом установленное можно чисто удалить, что не всегда просто, если ставить вручную или, особенно, с помощью систем вроде configure/make

Эта возможность называется Vimball, что можно перевести как "комок" или "клубок" Вим. Это один файл, в который запрессовано всё, что нужно. Обычно имеет расширение .vmb.

Это и для себя может быть полезно: сделали что-то ценное — создайте Вимболл и закиньте в облако на вечное хранение. На новом компьютере или на новой системе быстренько развернете всё, и не надо запоминать, что где лежало. Небесполезная вещь.

https://img2.joyreactor.cc/pics/post/instal-wizard-%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%9A%D0%BE%D0%BC%D0%B8%D0%BA%D1%81%D1%8B-5595040.jpeg
https://img2.joyreactor.cc/pics/post/instal-wizard-%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%9A%D0%BE%D0%BC%D0%B8%D0%BA%D1%81%D1%8B-5595040.jpeg

Имея такой файл, вы открываете его в Вим, выполняете как скрипт:

:source %

и закрываете. Как на картинке — не будет.

Всё будет установлено куда следует. Используется первый доступный каталог из опции runtimepath, в котором и перечислены каталоги. Можно посмотреть, какой каталог доступен: echo &rtp.

Чтобы удалить установленное, есть команда :RmVimball

Для создания Вимболла предназначена команда :MkVimball. Она получает диапазон строк, на которых должны быть имена файлов, составляющих ваш пакет. Файлов, лежащих "где следует", чтобы Вим их нашел. И надо указать имя будущего файла-архива, можно без расширения. Например, вы пишете:

old_russian.vim
old_russian.txt

Первый лежит в .vim/langmap, второй там, где положено лежать справке.

На первых двух строках и отдаете команду

:1,2MkVimball old_russian

чтобы получить old_russian.vmb, готовый к установке.

Вот он. Скрипт нехитрый, а свернут, собственно, полезный код. Он может быть заархивирован zip, но в моем случае это сочтено излишним. Фолдинг по меткам Вим сам устроил.
Вот он. Скрипт нехитрый, а свернут, собственно, полезный код. Он может быть заархивирован zip, но в моем случае это сочтено излишним. Фолдинг по меткам Вим сам устроил.

Восклицательный знак позволяет перезаписать уже существующий архив. Он же настаивает на включении слешей — обычно на них команда ругается.

Есть несколько переменных, которые можно задавать для контроля. Например, можно явно указать, куда устанавливать всё добро.

Можно посмотреть, что в архиве есть, командой Vimballlist. Ещё и длины файлов выведутся.

Можно вручную запустить установку, командой UseVimball. Именно эта команда и выполнится, если запустить сам файл на выполнение. С точки зрения безопасности, наверное, чуть безопаснее запустить самому: это хоть лишнего не выполнит. Но не безопаснее, чем заглянуть в файл и посмотреть, с чего он начинается. Кстати, первой строкой обязательно должно быть

" Vimball Archiver by Charles E. Campbell

Можно запретить запуск Вимболлов. Для этого задайте в .vimrc две переменные:

let g:loaded_vimballPlugin= 1
let g:loaded_vimball= 1

Если файлов много и длинные, то они будут сжаты pkzip, но если мало и маленькие, то вимболл будет весь текстовый.

Очень просто, очень удобно. Удачи, коллеги!

Научно-популярные каналы на Дзене: путеводитель
Новости популярной науки12 марта 2022