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 - це супернабір редакцій, найбільш помітним розширенням є засоби редагування дисплея. колишній (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-подібних системах із встановленим завитком. Додати, -V
щоб побачити сценарій у дії.
Більше прикладів:
Дивись також: