| |
изд."БХВ-Петербург", 2002 г., серия "Самоучитель".
В.А.Костромин, "Linux для пользователя". Консольные редакторы ASCII-файлов
Глава 12. Программы для работы с текстом
12.5. Консольные редакторы ASCII-файлов
Начнем с рассмотрения редакторов текстового
режима, т. е. работающих в консоли. Говоря о таких редакторах
просто нельзя не упомянуть о редакторахы vi
и Emacs, но более основательно будет рассмотрен
встроенный редактор оболочки Midnight Commander –
Cooledit.
12.5.1 Редакторы типа vi
Редактор vi
(или его несколько доработанные потомки) по умолчанию включается в
любую UNIX-подобную систему, в том числе и во все дистрибутивы Linux.
Все приверженцы UNIX, имеющие значительный стаж работы с этими ОС,
знают и используют этот редактор. Описание редактора vi
вы сможете найти если не в любой, то уж точно в большинстве книг,
посвященных UNIX. У редактора vi
имеется несколько потомков, которые в чем-то его улучшают и
усовершенствуют. Это такие редакторы как Vim, bvi, Nvi, Elvis, Levee, vile, Wily (редактор Vim
даже вызывается в Linux по команде vi). Краткий обзор редакторов этого класса вы можете найти
в статье А. Фомичева "Текстовые редакторы для ОС UNIX"
(Открытые системы, № 4, 1994 г.).
Однако для тех пользователей, которые мигрировали в Linux
из среды Windows, все эти редакторы вряд-ли
покажутся удобными. Причина в том, что в этих редакторах нет
привычных меню и подсказок (насколько можно судить по
Vim версии 5.3) и надо запомнить множество клавиатурных комбинаций для
ввода команд. При этом работа в редакторе организована в виде двух
раздельных режимов — ввода текста и ввода команд, и
новичок часто просто путает режимы. В общем без печатного руководства
за освоение редакторов этого типа я бы вам браться не рекомендовал. И
хотя те, кто освоил vi,
часто прибегают к его помощи для редактировании простых файлов
(особенно, конфигурационных файлов и скриптов), я считаю, что есть
более удобные средства, а поэтому не рассматриваю редакторы типа
vi (хотя не упомянуть о них не мог).
12.5.2 Редактор Emacs
Наибольшую известность среди редакторов,
используемых в Linux, имеет Emacs. Он
существует как в варианте для текстового режима, так и в варианте для
графической оболочки. Некоторые даже говорят, что Emacs —
это не редактор, а образ жизни, а в другом источнике его называют
религией. Если вы хотите ближе познакомиться с Emacs, я могу
рекомендовать вам недавно вышедший русский перевод книги Р.Столлмана
о нем; поищите эту книгу, например, в виртуальном магазине "Болеро".
Прекрасное вводное описание этого редактора вы найдете в книге
А.Федорчука "Офис, графика, Web в
Linux". Я, однако, считаю, что
начинающим пользователям для редактирования ASCII-файлов
целесообразно использовать CoolEdit —
встроенный редактор файлового менеджера Midnight Commander.
12.5.3 CoolEdit —
встроенный редактор программы Midnight Commander
CoolEdit —
это простая в использовании программа с привычными для
большинства пользователей (особенно для тех, кто работал с Norton
Commander под DOS или с FAR под WINDOWS) комбинациями управляющих
клавиш. Кроме того, надо учитывать, что обычно любая работа с файлом
начинается с файлового менеджера, поскольку вначале нужно, как
минимум, найти файл. Midnight Commander как
раз и является таким файловым менеджером, причем переход к
редактированию осуществляется простым нажатием клавиши <F4>
после установки подсветки на имя найденного файла. Это
мелочь, но удобно. Учитывая изложенные соображения, я начну подробный
рассказ о текстовых редакторах именно с CoolEdit.
Встроенный редактор Midnight Commander (рис.12.7)
вызывается во время работы в этой программе нажатием клавиши <F4>
при условии, что в инициализационном файле Midnight Commander
установлена в 1 опция "use_internal_edit".
Его также можно вызвать независимо от Midnight Commander просто из
командной строки, командой mcedit.
Однако его истинное имя все же CoolEdit, в
этом вы можете убедиться, если в режиме редактирования нажмете
клавишу <F9> и откроете пункт меню
Файл | Об авторах.
Рис. 12.7. Внешний вид окна редактора Cooledit
Этот редактор обеспечивает выполнение большинства
функций редактирования, присущих полноэкранным редакторам текста. С
его помощью можно редактировать файлы практически любого размера,
поскольку верхняя граница для размера редактируемого файла составляет
16 Мбайт. Обеспечивается редактирование исполняемых
(двоичных) файлов без потери данных.
Поддерживаются следующие возможности:
- копирование, перемещение, удаление, вырезание и вставка
блоков текста;
- отмена предыдущих операций (по комбинации клавиш <Ctrl>+<U>);
- выпадающие меню;
- вставка файлов;
- макро-определения;
- поиск и замена по регулярным выражениям (другими словами, по
шаблонам, сформированным с использованием специальных символов), а
также собственный вариант операций поиска и замены, основанный на
функциях scanf-printf;
- выделение текста комбинацией клавиш <Shift>+<стрелки>
в стиле MS Windows — MAC (только для linux-консоли);
- переключение между режимами вставки-замены символа.
Редактор очень прост и практически не требует
обучения (тем более, что можно найти версии, в которых основная часть
пунктов меню русифицирована, такая версия была включена, например, в
дистрибутив Black Cat 5.2). Для того, чтобы узнать, какие клавиши
вызывают выполнение определенных действий, достаточно просмотреть
выпадающие меню, вызываемые нажатием клавиши <F9>
в окне редактора (рис. 12.8).
Рис. 12.8. Выход в меню
Cooledit по клавише <F9>
Если вы работаете в консоли Linux,
для работы с блоками текста можно использовать следующие комбинации
клавиш:
- <Shift>+<клавиши стрелок> —
выделение блока текста;
- <Ctrl>+<Ins> —
копирует блок в файл cooledit.clip;
- <Shift>+<Ins> —
производит вставку последнего скопированного в cooledit.clip блока в
позицию курсора;
- <Shift>+<Del> —
удаляет выделенный блок текста, запоминая его в файле cooledit.clip.
Если у вас установлена программа gpm —
драйвер мыши для консоли, то вы можете нажать на левую кнопку мыши в
начале выделяемого блока, перенести курсор в конец блока и отпустить
кнопку (тем самым выделить текст), а затем перенести курсор туда,
куда надо вставить фрагмент, и нажать на правую кнопку мыши для
вставки выделенного текста.
Редактор поддерживает макросы. Для того, чтобы
определить макрос, нажмите <Ctrl>+<R>,
после чего введите строки команд, которые должны быть выполнены.
После завершения ввода команд снова нажмите <Ctrl>+<R>
и свяжите макрос с какой-нибудь клавишей или комбинацией клавиш,
нажав эту клавишу (комбинацию). Макрос будет вызываться нажатием
<Ctrl>+<A>
и назначенной для него клавиши. Макрос можно также вызвать нажатием
любой из клавиш <Alt>, <Ctrl>
или <Esc> и назначенной макросу
клавиши, при условии, что данная комбинация не используется для
вызова какой-либо другой функции.
Макро-команды после определения записываются в
файл cedit/cooledit.macros в Вашем домашнем каталоге. Вы можете
удалить макрос удалением соответствующей строки в этом файле.
При выполнении операций замены (по функциональной
клавише <F4>) вы можете использовать
функции поиска и замены scanf для поиска и замены в соответствии с
шаблонами формата языка C. Вначале посмотрите man-страницы sscanf и
sprintf, чтобы узнать, что такое шаблоны формата и как они работают.
Приведем пример: предположим, вы хотите заменить
все вхождения блоков текста, состоящих из открывающей скобки, трех
разделенных запятыми чисел, и закрывающей скобки, на блок, состоящий
из слова apples, третьего числа исходного блока, слова oranges и
потом второго числа из исходного блока. Тогда в диалоговом окне,
которое появится при вызове команды замены (<F4>),
надо задать следующие шаблоны:
Enter
search string
(%d,%d,%d)
Enter
replace string
apples
%d oranges %d
Enter
replacement argument order
3,2
Последняя из этих строк говорит, что третье и
второе число должны быть подставлены на места первого и второго
аргументов. Рекомендуется все же при осуществлении замены
пользоваться опцией "спрашивать подтверждение" ("Prompt
on replace"), потому что программа считает совпадениями все
случаи, когда число аргументов совпадает с заданным, хотя это не
всегда означает полное совпадение. Scanf также не обращает внимания
на количество символов пробела.
Встроенный редактор обрабатывает символы из второй
половины кодовой таблицы (160+). Но когда редактируете бинарные
файлы, лучше установить опцию Биты символов (Display bits) из
меню Настройки в положение "7 бит", чтобы сохранить
формат файла.
Для того, чтобы описать здесь все функции
встроенного редактора, потребовалось бы слишком много места. Да в
этом и нет нужды, поскольку для его использования достаточно
запомнить, что все основные операции можно выполнить через пункты
меню, которое вызывается нажатием клавиши <F9>
в окне редактирования. Кроме того, можно прочитать man-страницу по
команде man
mcedit или info
mcedit.
В завершение этой краткой справки по встроенному
редактору программы Midnight Commander мне хочется рассказать о том,
как осуществляется перенос фрагментов текста из одного файла в
другой.
Если вы работаете в консоли, то эта задача
решается через меню или с помощью следующих операций:
- отмечаем начало блока с помощью клавиши <F3>;
- перемещаем курсор к концу блока;
- отмечаем конец блока с помощью клавиши <F3>;
- набираем комбинацию <Ctrl>+<Insert>;
- закрываем этот файл, открываем другой;
- ставим курсор туда, куда хотим вставить данный фрагмент, и
нажимаем комбинацию клавиш <Shift>+<Insert>.
Все,
задача выполнена. Перенос фрагмента текста этим способом может быть
произведен из одной виртуальной консоли в другую.
Но
все это работает только в консоли. А при работе с тем же редактором в
окне графической оболочки та же задача была для меня достаточно
долгое время проблемой.
Я
не сразу нашел способ ее решения (т. е. переноса фрагмента
текста), который работает как в консоли, так и в окне графической
оболочки. Этот способ состоит в переносе фрагмента текста через
другой файл (по умолчанию используется файл ~/.cedit/cooledit.clip).
Выделите фрагмент текста, выберите пункт меню Файл |
Копировать в файл (File |
Copy to file) и нажмите <Enter>.
Затем переходите в другой файл, ставите курсор туда, куда надо
вставить фрагмент, и выбираете пункт меню Файл |
Вставить файл (File | Insert
file).
|
|