Редактор Euphoria


Введение

В пакет Euphoria, поставляемый RDS, включен удобный редактор, работающий в текстовом консольном режиме, ed, который написан полностью на Euphoria. Многие пользователи находят ed весьма подходящим для редактирования программ Euphoria и других файлов, но вовсе не обязательно, чтобы вы тоже использовали его.

Если вам не по душе ed, имеется множество альтернатив. Редактор EE Дэвида Куни, предназначенный для DOS, также написан на Euphoria и ориентирован на Euphoria. Он имеет дружественный интерфейс с управлением от мыши, с выпадающими меню и т.п. Он доступен в Архиве на Web-сайте RDS. Имеется также довольно много других редакторов, предназначенных для Euphoria, которые работают под DOS, Windows, Linux и FreeBSD. Полюбопытствуйте в разделе Редакторы нашего Архива. Фактически же любой текстовый редактор может быть использован для написания программ Euphoria, включая DOS Edit или Windows NotePad.

Краткий обзор

 
запуск 1:   ed имя_файла
запуск 2:   ed

После любой ошибки, остановившей вашу программу, просто введите ed, и вы окажетесь в работающем редакторе, уже загрузившем исходный код вашей программы, именно в той точке кода, в той строке и колонке текста, где интерпретатором была обнаружена ошибка. Сообщение об ошибке будет выведено в верхней строке экрана.

Файлы, относящиеся к Euphoria, отображаются с цветной раскраской синтаксиса. Другие текстовые файлы отображаются одноцветными. Раскраска правильного синтаксиса подскажет вам, что вы ошибаетесь в написании слова, если его цвет не изменился, как вы ожидаете. Ключевые слова отображаются в синем цвете. Имена подпрограмм, встроенных в интерпретатор - в малиновом. Строковые данные - зелёные, комментарии - красные, остальной текст обычно чёрный. Парные (согласованные) скобки (в одной строке) имеют одинаковый цвет. Вы можете переназначить эти цвета, как и многие другие параметры редактора ed. Обратите внимание на раздел "user-modifiable parameters" -- "параметры, доступные пользователю" в верхней части файла ed.ex. Там эти параметры собраны.

Клавиши со стрелками перемещают курсор влево, вправо, вверх или вниз. Клавиатура при вводе символов работает в режиме вставки.

Под Windows вы можете "ассоциировать" с программой ed.bat различные типы файлов. Тогда вы будете запускать редактор ed, дважды щёлкнув мышью на этих файлах, например, с расширениями .e, .pro, .doc и т.д. Главные файлы программ Euphoria, имеющие расширение .ex (.exw), возможно, лучше ассоциировать с ex.exe (exw.exe).

Редактор ed является многофайловым/многооконным DOS-редактором. Команда Esc c будет делить ваш экран на части так, что вы сможете одновременно просматривать и редактировать до 10 файлов, вырезая и перенося текст между ними. Многооконный режим удобен также для просмотра и редактирования различных участков единственного файла.

Специальные клавиши

Некоторые клавиши клавиатуры PC не работают на текстовой консоли Linux или FreeBSD, а также в системе Telnet, и некоторые клавиши не работают в xterm под X Windows. Для этих случаев предусмотрены альтернативные клавиши. Иной раз вам придётся отредактировать ed.ex под Linux/FreeBSD, чтобы назначить нужной клавише необходимую функцию по вашему выбору.

Delete - Удаляет текущий символ над курсором.
Backspace - Сдвигает курсор влево, удаляя символ.
Ctrl-Delete - Удаляет текущую строку (Ctrl-Delete доступна не на всех системах).
Ctrl-d - Удаляет текущую строку (как и Ctrl-Delete).
Insert - Вставляет то, что было удалено в предшествующей серии команд Delete или Ctrl-Delete, перед текущим символом или текущей строкой.
Ctrl-arrow-left - Переносит курсор к началу предыдущего слова. Под Linux/FreeBSD используйте Ctrl-L.
Ctrl-arrow-right - Переносит курсор к началу следующего слова. Под Linux/FreeBSD используйте Ctrl-R.
Home - Переносит курсор к началу текущей строки.
End - Переносит курсор к концу текущей строки.
Ctrl-Home - Переносит курсор к началу файла. Команда работает только с ex.exe. Под Windows/Linux/FreeBSD используйте Ctrl-T (т.е. Top).
Ctrl-End - Переносит курсор к концу файла. Команда работает только с ex.exe. Под Windows/Linux/FreeBSD используйте Ctrl-B (т.е. Bottom).
Page Up - Переносит курсор вверх на один экран. Под xterm Linux/FreeBSD используйте Ctrl-U
Page Down - Переносит курсор вниз на один экран. Под xterm Linux/FreeBSD используйте Ctrl-P
F1 ... F10 - Выбирает новое текущее окно. Номера окон идут сверху вниз, верхнему окну соответствует F1.
F12 - Это специальная заказная команда. Она установлена для вставки знака начала комментария Euphoria "--" в начале текущей строки. Вы можете легко изменить её назначение для выполнения серий нажатий на клавиши, которые вам необходимы, просто переопределив константу CUSTOM_KEYSTROKES в начале файла ed.ex.


Команды Esc

Нажмите и отпустите клавишу Esc, а затем нажмите одну из следующих клавиш:

h - Выводится текст справки по редактору или Euphoria. Экран делится так, чтобы вы видели и свою программу, и текст справки.
c - "Клонируется" текущее окно, т.е. открывается новое окно редактирования, в котором сначала выводится тот же самый файл в той же самой позиции, что и в текущем окне. Размеры всех окон подстраиваются, чтобы освободить место для нового окна. Имеется команда Esc l, позволяющая изменить число строк на экране. Каждое окно, которое вы создаёте, прокручивается независимо и у каждого есть собственная строка меню. Изменения, которые вы внесли в файл, сначала появляются только в текущем окне. Когда вы нажимаете клавишу Fn, чтобы выбрать новое окно, все изменения появляются и там. Вы можете использовать Esc n, чтобы ввести новый файл в любое окно.
q - Текущее окно удаляется, а если оно было единственным, завершается работа редактора. Вы будете предупреждены, если это последнее окно использовалось для редактирования изменённого файла. Все остающиеся окна получают больше места.
s - Сохраняется файл, который редактировался в текущем окне, а затем производится выход из текущего окна, как по команде Esc q выше.
w - Сохраняется редактируемый файл, выход из окна не осуществляется.
e - Сохраняется редактируемый файл, а затем он запускается на исполнение под управлением ex, exw или exu. После окончания программы вы услышите звуковой сигнал. Нажмите Enter, чтобы вернуться в редактор. Эта команда может не работать, если у вашей машины слишком мало расширенной памяти. И вы не сможете подать в свою программу аргументы командной строки.
d - Запускается команда операционной системы. После звукового сигнала нажмите клавишу Enter, чтобы вернуться в редактор. Вы могли бы использовать эту команду, чтобы редактировать другой файл, а затем вернуться к первому, но команда Esc c, вероятно, более удобна.
n - Начинается редактирование нового файла в текущем окне. Удалённые строки/символы и поисковые строки остаются доступными для использования и в новом файле. Но вы должны ввести путь к новому файлу. Под Windows вы можете перетащить мышью файл из окна файлового менеджера в окно MS-DOS для ed. Этим приёмом полный путь к файлу тоже вводится в ed, как и с клавиатуры.
f - Отыскивается новое вхождение заданной строки в текущем окне. Когда вы вводите искомую строку, поиск возможен с учётом регистра или без. Нажмите y, если вы хотите, чтобы верхний и нижний регистр букв отличались. Нажимайте клавишу Enter для поиска последовательных вхождений. Любая другая клавиша прервёт поиск. Чтобы начать поиск от начала файла, нажмите Ctrl-Home перед Esc f. Искомая строка по умолчанию, если вы не ввели ничего нового, отображается в двойных кавычках.
r - Заменяется одна строка другой. Работает подобно команде Esc f. Нажимайте клавишу Enter, чтобы продолжать замены. Будьте внимательны -- обходного пути, чтобы пропустить возможную замену, не существует.
l - Изменяется число строк, отображаемых на экране. Разрешены только те значения, которые допускает ваша видеоплата. Многие видеоплаты поддерживают 25, 28, 43 и 50 строк.

Под Linux/FreeBSD текстовая консоль обычно ограничивается 25-ю строками. В окне xterm под Linux/FreeBSD ed будет использовать столько строк, сколько было доступно при его старте. Изменение размера окна не будет иметь эффекта после старта ed.

m - Отображаются сделанные вами модификации в файле. Текущий буфер редактирования сохраняется как файл editbuff.tmp, который сравнивается с файлом на диске по команде DOS fc или по команде diff Linux/FreeBSD. Esc m очень полезна, когда вы хотите выйти из редактора, но не помните изменения, сделанные вами, и не знаете, следует ли их сохранить. Или, сделав ошибку, вы хотите посмотреть, как выглядел исходный текст.
ddd - Курсор перемещается в строку номер ddd. Например, Esc 1023 Enter перенесёт вас в файле в строку номер 1023.
CR - Esc Carriage-Return, т.е. Esc Enter, выведет для вас имя текущего файла, а также номера строки и колонки, в которых находится курсор. Плюс информацию о том, изменялся ли файл с момента его последнего сохранения. Если вы нажали Esc, а затем передумали что-то менять, просто нажмите Enter, чтобы вернуться к редактированию.


Вызов ранее вводившихся строк

Команды Esc n, Esc d, Esc r и Esc f пригласят вас ввести строку. Вы можете перевызвать ранее вводившиеся строки и отредактировать их, как это делается в консолях DOS или Linux/FreeBSD. Нажимайте клавишу со стрелкой вверх или клавишу со стрелкой вниз, чтобы циклически просмотреть буфер введенных строк для данной команды, а затем используйте клавиши с левой и правой стрелками и клавишу Delete для редактирования выбранной строки. Закончив редактирование, нажмите Enter, чтобы ввести строку.


Удаление и вставка

Когда вы нажимаете клавиши Ctrl-Delete (или Ctrl-D), удаляя серию последовательных строк, или Delete, удаляя серию последовательных символов, создаётся буфер, содержащий то, что вы только что удалили. Содержимое этого буфера может быть вставлено в новом месте, если вы сдвинете курсор, а затем нажмёте клавишу Insert.

Новый буфер создаётся, а старый теряется, каждый раз, когда вы сдвигаете курсор и начинаете новую серию удалений где-то в другом месте. Например, удалите серию строк командой Ctrl-Delete. Затем переместите курсор в то место, где вы хотите вставить эти строки, и нажмите клавишу Insert. Если вы хотите скопировать строки без уничтожения оригинального текста, сначала нажмите Ctrl-Delete, удалив их, а затем немедленно нажмите клавишу Insert, чтобы вставить их снова на старом месте. Затем переместите курсор в то место, где вам нужна копия, и ещё раз нажмите клавишу Insert, чтобы вставить копию строк на новом месте. И вставляйте так столько раз, сколько вам надо. Вы также можете удалить командой Delete серию отдельных символов, переместить курсор и вставить эти символы в другом месте. Немедленно нажмите Insert после удаления, если вы хотите только копировать, не удаляя прочь оригинальные символы.

Создав буфер, вы можете командой Esc n прочитать новый файл или, нажав клавишу Fn, выбрать другое окно редактирования. А затем вставить буфер в новом файле или в новом окне.


Использование табулятора

Стандартный шаг табуляции равен 8-ми пробелам. Редактор подразумевает этот шаг для большинства файлов. Тем не менее, при редактировании программного текста более удобным является шаг табуляции, равный тому отступу, который вы предпочитаете. Поэтому вы обнаружите, что шаг табуляции равен 4, когда начнёте редактировать файлы Euphoria (или .c-, или .h- или .bas-файлы). Редактор преобразует шаг 8 в шаг 4, когда читает ваш программный файл, и преобразует обратно к шагу 8, когда вы сохраняете файл. Поэтому ваш файл остаётся совместимым с миром, где шаг табуляции равен 8, например, MS-DOS PRINT, EDIT, и т.п. Если вы хотели бы выбрать другое число отступов, измените строку в файле ed.ex, в которой определена константа "constant PROG_INDENT = 4".


Длинные строки

Строки редактируемого текста, длина которых выходит за пределы экрана, маркируются символом в инверсном цвете, который находится в 80-ой колонке. Эти маркеры предупреждают вас, что есть ещё текст, которого вы не видите. Вы можете перемещать курсор за 80-ю колонку, правее. Экран будет прокручиваться, так что курсорная позиция всегда будет видна.


Максимальный размер файла

Подобно любой программе Euphoria, редактор ed имеет доступ ко всей памяти, имеющейся на вашей машине. Он может редактировать громадные файлы, и пока не начался свопинг на диск, большинство операций будет очень быстрым.


Нетекстовые файлы

Редактор ed разработан для редактирования чисто текстовых файлов, хотя вы можете использовать его и для просмотра других файлов. По мере чтения таких файлов ed заменяет служебные символы (с кодом, меньше ASCII 14) символом с кодом ASCII 254 - маленький квадрат. Если вы попытаетесь сохранить нетекстовый файл, вы будете предупреждены. (MS-DOS Edit просто испортит нетекстовый файл - не сохраняйте!). Поскольку ed открывает все файлы как текстовые, любой символ Ctrl-z (26), имеющийся в файле, будет воспринят им как символ конца файла.


Длинные имена файлов

Хотя ed является DOS-редактором, вы можете в нём редактировать существующие файлы, путь к которым содержит длинные имена. Полное имя файла будет при этом сохранено. Тем не менее, ed данного выпуска не может создавать новые файлы с длинными именами. Имя будет усечено до стандартной длины DOS 8.3 (но см. раздел Платформы ниже).


Символ конца строки

Символом конца строки под Linux/FreeBSD является просто \n. Под DOS и Windows текстовые файлы имеют строки, заканчивающиеся парой символов - \r\n. Если вы копируете файл DOS или Windows под Linux/FreeBSD и пытаетесь изменить его, ed предложит вам выбор - оставить строки с \r\n, или сохранить файл со строками в виде \n.


Исходный код

Полный исходный код этого редактора находится в файлах bin\ed.ex и bin\syncolor.e. Вы приглашаетесь к его усовершенствованию. В начале файла ed.ex имеется секция, содержащая конфигурационные параметры, доступные для редактирования пользователями. Вы можете подстроить эти параметры по своему вкусу. Цвета и размер курсора могут потребовать подстройки в некоторых версиях операционного окружения.


Платформы

Файл euphoria\bin\ed.bat может быть установлен на запуск ed.ex с использованием exwc.exe или ex.exe. Лучшим вариантом для Windows 95/98/ME является запуск ed под управлением ex.exe. Экран в этом случае будет обновляться значительно быстрее, чем с exwc.exe. Но для Windows XP более предпочтительным будет использование exwc.exe. Вы получите и быстрый экран, и возможность создания файлов с длинными именами, а не только открытия уже существующих. Тем не менее, некоторые специальные клавиши не будут работать с exwc.exe, например, вам придётся использовать Ctrl-t и Ctrl-b вместо Ctrl-Home и Ctrl-End. Под Linux и FreeBSD нет никаких проблем с длинными именами, а клавиатура работает всегда быстро.