Vim в режиме Ex (также известный как ex
) полезен, когда:
- Вам необходимо редактировать (несколько) файлов не в интерактивном режиме (как часть сценария).
- Ваше соединение очень медленное или экран не обновляется после ваших действий.
- Отображения и сокращения отключены.
- Общие ключи, такие как Escapeили Controlне работают должным образом.
Неинтерактивное редактирование файлов является наиболее распространенным видом использования, и люди используют его таким же образом, как sed
и awk
, хотя они более ориентированы на поток - они только читают файл вперед от начала до конца, в то время vim
как ориентированы на буфер - вы можете двигаться вперед и назад в файле, как вам нравится. Во-вторых, регулярные выражения vim более мощные, чем выражения awk и sed (они не предназначены для работы с несколькими строками) - например, vim может сопоставлять несколько строк и поддерживает ноль совпадений.
Ex также является редактором (прямым предшественником vi) и в Vim - Ex Mode эмулирует ex
(они все еще выполняют один и тот же код), так что можно перейти в командный режим ex
изнутри vi и наоборот. Существует режим Ex ( vim -e
) и улучшенный режим Ex, который допускает более сложные команды, чем совместимый с vi режим Ex ( vim -E
). Смотрите: В чем разница между режимом Ex и улучшенным режимом Ex?
Ex является корнем семейства редакторов: edit, ex и vi. Ex - это набор ed, наиболее заметным из которых является средство редактирования экрана. ех (1)
Пример 1
Вот простой пример перехода 127
в 128
ваш hosts
файл и распечатки вывода:
ex -s +%s/127/128/g +%p +q! /etc/hosts
эквивалентно:
sed s/127/128/g /etc/hosts
Для более продвинутого решения вы можете иметь файл с командами vim и использовать его более классическим подходом к перенаправлению ввода / вывода:
echo :%s/127/128/g > cmds.vim echo :%print >> cmds.vim echo :%quit! >> cmds.vim ex -s /etc/hosts < cmds.vim # The same as: vim -s cmds.vim /etc/hosts
Пример 2
Вы также можете использовать плагины vim для выполнения некоторых задач.
Например, следующий однострочный конвертирует ваш файл исходного кода в html, используя один из стандартных плагинов:
ex -s '+let g:html_no_progress=1' '+syntax on' '+set ft=c' '+runtime syntax/2html.vim' -cwqa my_code.c
Он сгенерирует HTML-файл (с подсветкой синтаксиса) из вашего кода (написанный на любом поддерживаемом языке), который готов к печати или публикации на вашем веб-сайте.
Пример 3
Или реальный пример из спецификации RPM :
vim -E -s Makefile <<-EOF :%substitute/CFLAGS = -g$/CFLAGS =-fPIC -DPIC -g/ :%substitute/CFLAGS =$/CFLAGS =-fPIC -DPIC/ :%substitute/ADAFLAGS =$/ADAFLAGS =-fPIC -DPIC/ :update :quit EOF
Пример 4
Следующий скрипт создаст новый html-файл, загрузив html сайта Example и заменив его тело на автоматически сгенерированную таблицу 20x20 со случайными числами в ней:
" table.vim %!curl -s example.com let @t='<table>'.repeat('<tr>'.repeat('<td>_</td>',20).'</tr>',20).'</table>' /<body norm!vitd"tP %s/_/\=system('echo $RANDOM')/g wq
Использование:
ex -s table.html < table.vim
Это будет работать на * nix-подобных системах с установленным curl. Добавьте, -V
чтобы увидеть сценарий в действии.
Больше примеров:
Смотрите также: