16. Текстовые редакторы в Unix. Редакторы vi/vim. Потоковый редактор sed. Команды sed. Обработка текстовых данных. Регулярные выражения, их использование в обработке текстов.

Редакторы для Unix делятся на 2 группы - редакторы командного стиля(vi, emacs, joe, ed) и меню-ориентированные (mcedit, kwriter, kword).

Редакторы командного стиля обычно работают в консольном (текстовом) режиме. Все действия в них выполняются подачей прямых управляющих команд, закрепленных за определенными сочетаниями клавиш. Мышь и меню в них, как правило, не используются.

Редактор vi присутствует как стандартный в любой Unix-подобной системе. Существует несколько редакторов основанных на vi: vim, elvis. Современные клоны vi (vim к примеру) обладают очень большой функциональностью, скрытой за аскетичным интерфейсом. Редактор vi изначально создавался как кросс-платформенный, который обязан работать на любых типах терминалов и виртуальных консолей. Все действия в нем можно осуществить не покидая основной, алфавитно-цифровой, части клавиатуры. Примечание. Далее мы будем рассматривать редактор vim. Однако все описанные команды можно будет применить в любом vi-совместимом редакторе.

В vi существует три принципиально различных режима работы:

Командный режим включается по умолчанию при запуске vi. В этом режиме нажатия клавиш не приводят к вводу символов, а интерпретируются как внутренние команды перемещения по тексту и редактирования. 1В этом качестве он внесен в стандарт Single Unix Specication 25 26 ГЛАВА 4. ТЕКСТОВЫЙ РЕДАКТОР VI Поэтому попытка немедленно начать ввод текста (как в DOS/Windows) ни к чему не приведет. Примечание. Если вы не знаете, в каком режиме находитесь, то нажмите клавишу ESC для перехода в командный режим. Создание текста в командном режиме невозможно. Для этого нужно перейти в режим ввода. Для этого служат команды (командного режима!) a (от append - после текущей позиции курсора) и i (от insert - перед текущей позицией курсора). В режиме ввода нажатия клавиш приводят к вводу обычных символов, позволяя создавать новый текст или редактировать существующий. Возврат в командный режим осуществляется нажатием клавиши escape. Для операций с документами (файлами) предназначен ex-режим. Он вызывается командой : командного режима. После этого дается команда ex-режима. Например: • открыть существующий файл (:e имя_файла) • вставить файл в позицию курсора (:r имя_файла) • записать файл (:w), в том числе под другим именем (:w имя_файла) • выход из сохраненного файла (:q) • выход с предварительным сохранением файла (:x) Когда вы находитесь в ex-режиме, то в нижнем левом углу экрана появляется :. Возможно совмещение команд ex-режима. Например :wq. Команда ex-режима отправляется на выполнение нажатием клавиши Enter после чего происходит возврат в командный режим. Примечание. Попытка загрузить новый файл (командой :e) или завершить работу редактора (командой :q) при несохраненном старом файле вызовет ошибку. 4.2 Получение помощи Получить справку можно используя ex-команду :help. Подразделы справки выделены значками |раздел|. Справку по ним вызывается через :help раздел. Очень полезным является учебник по vim - vimtutor. С его помощью можно освоить основные навыки использования vim. 4.3 Запуск и остановка редактора Vi (vim) может быть запущен из командной строки, с именем файла или без такового. Если указано имя файла, то редактор открывает его2 . 2Если файл не существует, то создается новый 4.4. ПЕРЕМЕЩЕНИЕ ПО ТЕКСТУ 27 Пример: $ vi ~/texts/newtext.txt Команда vim без имени файла откроет редактор vim и выведет заставку. Для выхода из редактора нажмите :q или :wq (см. “Режимы работы”4.1). 4.4 Перемещение по тексту В командном режиме существуют следующие команды3 : • h - курсор влево на 1 символ • l - курсор вправо на 1 символ • j - курсор вниз на 1 строку • l - курсор вверх на 1 строку Также, есть расширенные команды, действующие с блоками текста. • w и W - перемещение вперед на “маленькое слово”4 и т.н. “большое слово”5 • b и B - перемещение назад на “маленькое слово”и “большое слово” • 0 и $ - на начало и на конец строки • ( и ) - на начало предложения и его конец Вообще, для многих команд vi характерно наличие парных элементов