2013-03-04 2 views
2

Хорошо, у меня довольно простой вопрос: как можно связать команду vim command/hotkey для выполнения сложного shell-скрипта?vim shell command integration

E.g. Я хочу оптимизировать base64-inlined изображения внутри css-файлов. Я знаю, что в оболочке, было бы что-то вроде:

echo `selection` > /tmp/img.png.b64 
base64 -d /tmp/img.png.b64 > /tmp/img.png 
optipng -o7 /tmp/img.png 
base64 -w 0 /tmp/img.png > `selection` 

Я хочу поставить selection в сценарий, а затем получить результат выполнения скрипта и заменить выбранное содержимое с этим результатом. Я вижу рабочий процесс как выбор base64 в режиме визуального блока и типа, например. :'<,'>optipng или нажмите горячую клавишу. Вопрос в том, как настроить vim для этого.

ответ

1

Vim позволяет использовать фильтр линиями через внешнюю команду с :[range]!{cmd}. Если ваша команда optipng может принимать данные от stdin и print to stdout, вы можете использовать ее напрямую; иначе, с помощью небольшой оболочки оболочки оболочки. См. :help :range!.

Одно ограничение заключается в том, что это работает только для целых строк, а не частей, даже если визуально выбран. Вы можете обойти это с помощью vis plugin; тогда было бы что-то вроде:

:'<,'>B !optipng -o7 
+0

Я полагаю, я предпочел бы парсинг 'base64' внутри внутри правила css (для подключения плагина). Спасибо за решение. – kirilloid