Запустить макрос vim из скрипта bash

Запустить макрос vim из скрипта bash

В скрипте bash я хочу редактировать файл. Есть ли способ написать макрос в vim, сохранить его и затем вызвать в скрипте bash?

решение1

Нет проблем: создайте файл макроса с помощью команд vi. Например:

:1,$s/a/b/g
:wq

Тогда бегиvi -s macro_file data_file

Один совет: попробуйте использовать sed/ awkвместо viдля этой цели

решение2

Это пример использования vim для создания HTML-версий файлов с помощью vim:

for f in *.c; do
    vim -f +"syn on" +"run! syntax/2html.vim" +"wq" +"q" "$f"
done

решение3

Вы можете использовать ex, который поставляется с vim и является инструментом командной строки для vim.

Ответ Эрана, безусловно, правильный, но я бы лично использовал ex -c( vim -cтакже возможно):

> echo asdf > blub
> ex blub -c "normal a_" -c "normal l.l.l." -c wq
> cat blub
a_s_d_f_

Это мой предпочтительный способ, поскольку здесь нет нескольких файлов.

Если переназначить escape на jj (например), можно будет легко создавать более сложные обычные операторы:

ex file -c "normal a_jjl.l.l." -c wq

Довожу до вашего сведения:

  • нормальныйотправляет письма в обычном режиме
  • вквыходит из программы
  • для отправки нескольких команд в одной строке (без дополнительной опции -c) используйте символ вертикальной черты |. Но: Это не работает в случае обычного.
  • Это работает только для 10 -c. Но для большего количества команд я бы рекомендовал создать файл.

Связанный контент