Vim в режимі Ex корисний, коли:
- Вам потрібно редагування (декількох) файлів неінтерактивно (як частина сценарію).
- Підключення дуже повільне або екран не оновлюється після ваших дій.
- Відображення та скорочення вимкнено.
- Загальні клавіші, такі як Escapeабо Controlне працюють належним чином.
В основному viце візуальний режим, exтому Vim Ex Mode - це просто емуляція ex(вони все ще виконують один і той же код), тому можна потрапити в командний режим exзсередини vi і навпаки. Насправді є два режими: Ex-режим ( vim -e) та покращений режим Ex, який дозволяє виконувати більш досконалі команди, ніж vi-сумісний Ex-режим ( vim -E). Див.: Яка різниця між режимом Ex та поліпшеним режимом Ex?
Ex є коренем сімейства редакторів: edit, exі vi. Ex - це супер-набір ed, найбільш помітне розширення - це програма редагування дисплеїв. колишній (1)
Неінтерактивне редагування файлів - це найпоширеніше використання, і люди користуються ним аналогічно, як sedі awk, однак вони більш орієнтовані на потоки - вони читають файл лише вперед від початку до кінця (вони не розроблені для роботи з кількома рядками ) Хоча vimбуфер орієнтований - ви можете рухатись уперед та назад у файлі, як вам подобається, що робить його таким потужним.
В основному:
sed- це S tream ED itor , а не редактор файлів.
Тим не менш, люди, здається, зловживають цим, намагаючись редагувати файли, і правда полягає в тому, що він не редагує файли. По-друге, його параметри, такі як in-place ( -i), є нестандартними розширеннями FreeBSD і можуть бути недоступні для інших операційних систем. Отже, якщо ви хочете уникнути неподатливого коду, накладних витрат на введення / виведення та поганих побічних ефектів (наприклад, знищення символьних посилань), вам слід скористатися exстандартним редактором на основі команд UNIX (разом із BashFAQed ) .
Інші речі, які мені здаються корисними в режимі Ex, - це використовувати його як ігровий майданчик (подібний до pythonконсолі), де ви можете виконувати багато команд поспіль, працюючи / налагоджуючи регулярні вирази, перевіряючи конфігурацію vim, виконуючи зовнішні команди чи працюючи з регістрами тощо .
Наприклад:
let @d = '<td></td>'
let @r = '<tr>' . repeat(@d, 5) . '</tr>'
echo @r
let @t = '<table>' . repeat(@r, 5) . '</table>'
reg
що в режимі Ex простіше, ніж у звичайному (там ви бачите лише останню команду).
Практичні звичаї
У мене є такі псевдоніми .bash_aliases:
alias trim="ex +'bufdo!%s/\s\+$//e' -scxa"
alias retab="ex +'set ts=2' +'bufdo retab' -scxa"
Примітка: Використання bufdoне exсумісний з POSIX методом (відповідно до інструкції ), тож ви можете використовувати його findзамість цього. !Використовуються для примусового перемикання буферів без збереження ( в іншому випадку генерується попередження).
Перший, який я використовую для обрізки пробілів у всіх своїх вихідних файлах, наприклад:
trim **/*.php
Другий перетворює всі вкладки в пробіли (рекурсивно), наприклад:
retab **/*.php
Для мене , використовуючи retabдосить, але є деякі недоліки , описані в тут . Додайте додатковий -Vдля збільшення випромінювання.
Слід зазначити , що наведені вище приклади з використанням ЗШ / bash4 підстановку ( **), тому переконайтеся , що ваша оболонка підтримує його і він включений.
Для отримання більш практичних прикладів (як розбір html-файлів) перевірте:
Дізнайтеся також більше про Ex-режим на:
Qіq:зовсім інші. Ви маєте на увазі лишеQправо?