
В скрипте 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. Но для большего количества команд я бы рекомендовал создать файл.