Встроенный редактор 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›), надо задать следующие шаблоны: