12.5.3 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).