Вы можете использовать универсальный binfmt -misc модуль ядра, который определяет, какой интерпретатор используется при запуске исполняемого файла. Обычно он используется, чтобы позволить вам запускать файлы внешней архитектуры без необходимости префикса qemu
или wine
, но может использоваться для распознавания любой последовательности магических символов в заголовке файла или даже заданное расширение имени файла, например *.xslt
. См. документацию ядра .
Например, если у вас есть файл demo.xslt
, который начинается с символов
вы можете попросить модуль распознать строку /usr/bin/xsltproc
от имени пользователя root
colon=$(printf '\\x%02x' \':) # \x3a
echo ":myxsltscript:M::/etc/binfmt.d/myxslt.conf
cat /etc/binfmt.d/myxslt.conf >/proc/sys/fs/binfmt_misc/register
Вам не нужно проходить через файл /etc
, если только вы не хотите, чтобы настройки сохранялись при перезагрузке. Если у вас нет файла /proc
, вам нужно сначала смонтировать его:
mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc
Теперь, если вы chmod +x demo.xslt
, вы можете запустить demo.xslt
с любыми аргументами, и он будет запущен xsltproc
с именем файла demo.xslt
, предоставленным в качестве дополнительного первого аргумента.
Чтобы отменить настройку, используйте
.
echo -1 >/proc/sys/fs/binfmt_misc/myxsltscript
Если ваш экземпляр Vim имеет доступ к системному буферу обмена (регистру+
)или выбору X (регистру *
), вы можете использовать мой подключаемый модуль CaptureClipboard для второй части. С помощью :CaptureClipboard
подключаемый модуль отслеживает изменения в буфере обмена и вставляет любое изменение содержимого буфера обмена в текущий буфер.