Режим двоеточия (ex mode) предназначен для обеспечения совместимости с однострочным редактором ex, являющимся расширенной версией редактора ed. Эти редакторы, несмотря на весьма почтенный возраст, до сих пор постав- ляются в современных версиях GNU/Linux. Это связано с исключительным удобством пакетной обработки текста этими редакторами и родственным им неинтерактивным редактором sed, о котором будет рассказано позже.
Команды режима двоеточия можно разделить на три категории:
r файловые;
r команды для выполнения команд оболочки;
r служебные.
Под файловыми командами в vi понимают разнообразные команды, предна- значенные для манипулирования файлами. Команды, предназначенные для
выполнения команд оболочки, возвращают результаты работы команд обо- лочки в редактируемый текст. Команда :s для замены текста, описанная в предыдущем разделе, является примером служебной команды режима двоеточия.
Все файловые команды в vi выполняются в режиме последней строки. Ис- ключение составляет команда ZZ, которая позволяет покинуть vi с сохране- нием редактируемого файла.
Таблица 7.3 демонстрирует наиболее важнейшие команды режима двоето- чия в vi.
Таблица 7.3. Команды режима двоеточия
Команда
Действие
:q
Выход из редактора
:q!
Выход из редактора без сохранения изменений
:wq
Выход из редактора с сохранением изменений
:x
Выход с сохранением, если текст был изменен
:w
Сохранение редактируемого файла
:w имя
Задание имени файлу и сохранение или запись с другим именем
:e имя
Открытие файла для редактирования
:e! имя
Открытие файла с отказом от изменений в редактируемом файле
:r имя
Вставка текста из файла в позиции курсора
:r! команда
Выполнение команды оболочки и вставка ее текстового вывода в файл
:y
Копирование строки в буфер (можно указывать диапазон строк)
:d
Удаление строк
:set showmode
Показывать текущий режим работы
:set number
Показывать номера строк
Особенностью служебных команд vi, начинающихся с :set, является то, что для отмены этого режима надо сделать такую же команду, но с добавкой префикса no.
Команда, выполненная в примере 7.10, включит нумерацию строк. Для отклю- чения этого режима следует выполнить команду, приведенную в примере 7.11.
Пример 7.10. Включение нумерации строк
:set number
Пример 7.11. Выключение нумерации строк
:set nonumber
Команда :set nonumber отключит вывод номеров страниц.