ГЛАВА 8. РЕДАКТОР ОТ А ДО Z. Эта глава является полным справочником команд редактора Turbo Pascal. Таблица 8.1 содержит список всех команд редактора; таблицы и текст, следующие за ними, охватывают те аспекты редактора, которые нуждаются в дальнейшем пояснении. Помните, эта глава касается только редактора. Консультацию по редактору и интегрированной усовершенствованной среде можно получить в главе 1 этого руководства; полная информация о всей интегрированной усовершенствованной среде Turbo Pascal содержится в главе 7. Примечание. Вы должны прочитать эту главу даже в том случае, если хорошо знаете редакторы в другой продукции Turbo. Новая интегрированная усовершенствованная среда Turbo Pascal включает усовершенствования по редактору. Контекстно-ориентированную справочную информацию всегда можно получить по клавише F1. Старое и новое. Новая интегрированная усовершенствованная среда Turbo Pascal все еще предлагает использовать комбинации горячих клавишей Borland для перемещений в файле, вставки, копирования, удаления текста, поиска и замены. Однако она предоставляет два новых меню в полосе меню: меню Edit и Search. Вдобавок, Turbo Pascal имеет поддержку мышки для многих команд передвижения курсора и пометки блока. Меню Edit содержит команды для вырезания, копирования и вставки текста в файл, копирования примеров из окна Help в окно Edit (редактора) и просмотра содержания кармана. Если Вы сейчас запустите Turbo Pascal в первый раз, окно редактора уже будет активно. Чтобы открыть другие окна редактора, войдите в меню File и выберите Open. Из окна редактора просто нажмите F10 для получения полосы меню; чтобы вернуться в окно редактора, нажимайте Esc столько раз, пока не выйдете из меню. Если имеется мышка, нужно просто отметить в любом месте окна редактора. Как всегда, Вы введете довольно много текста, как будто бы используете печатающее устройство. В конце строки нажмите Enter. Когда Вы наберете экран, полный строк, верхняя строка передвинется вверх за пределы экрана. Не беспокойтесь, она не потеряна, Вы можете вернуться назад и передвинуться далее в своем тексте с помощью команд скроллинга, описанных позднее. Редактор имеет способность восстановления, позволяющую вернуть назад изменения последней модифицированной строки. Эта команда (Edit/Restore Line) описана в разделе "Другие команды редактора" в этой же главе. Справочник редактора. Редактор является гораздо более мощным средством, чем может показаться после краткого обзора. Вдобавок к выбору меню, он использует примерно 50 команд для перемещения курсора, листания страниц, нахождения и замены строк и т.д. Эти команды можно разбить на четыре основные категории: - передвижение курсора; - операции вставки и удаления; - операции над блоками; - разнообразные операции редактирования. Многие из этих команд в пояснении не нуждаются, а те, которые нуждаются, поясняются в тексте, следующем за таблицей 8.1. Таблица 8.1. Полный обзор команд редактора. ___________________________________________________________________ Передвижение Команда ___________________________________________________________________ Команды передвижения курсора Основное передвижение курсора На символ влево ў На символ вправо Ў На слово влево Ctrlў На слово вправо CtrlЎ На строку вверх ° На строку вниз ∙ Скроллинг вверх на одну строку Ctrl-W Скроллинг вниз на одну строку Ctrl-Z На страницу вверх PgUp На страницу вниз PgDn На большие расстояния Начало строки Home Конец строки End Верх окна Ctrl Home Низ окна Ctrl End Начало файла Ctrl PgUp Конец файла Ctrl PgDn Начало блока Ctrl-Q B Конец блока Ctrl-Q K Последняя позиция курсора Ctrl-Q P Команды удаления и вставки. Включение/выключение режима вставки Options/Environment/Editor/ Insert Mode или Ins Удалить символ слева от курсора Backspace Удалить символ под курсором Del Удалить слово справа Ctrl-T Вставить строку Ctrl-N Удалить строку Ctrl-Y Удалить конец строки Ctrl-Q Y Команды работы с блоками. Отметить блок ShiftЎ,ў,°,∙, Ctrl-K B, Ctrl-K K Отметить одно слово Ctrl-K T Скопировать блок Edit/Copy, Edit/Paste или Ctrl-Ins, Shift-Ins Переместить блок Edit/Cut, Edit/Paste или Shift/Del, Shift/Ins Удалить блок Edit/Clear или Ctrl-Del Прочитать блок с диска Ctrl-K R Записать блок на диск Ctrl-K W Спрятать/показать блок Ctrl-K H Напечатать блок File/Print или Ctrl-K P Сделать отступ блока Ctrl-K I Отменить отступ блока Ctrl-K U Другие команды редактора. Включение/выключение Options/Environment/Editor/ автоотступа Autoindent Mode * Префикс управляющего символа ** Ctrl-P Найти маркер места Ctrl-Q n *** Идти к полосе меню F10 Новый файл File/New Открыть файл File/Open (F3) Включение/выключение Options/Environment/Editor/ оптимального режима заполнения Optimal Fill * Соответствие пар Ctrl-Q [и Ctrl-Q] Печатать файл File/Print Выход из интегрированной усовершенствованной среды File/Quit (Alt-X) Повторить последний поиск Search/Search Again или Ctrl-L Восстановить сообщение об ошибке Ctrl-Q W Восстановить строку Edit/Restore Line или Ctrl-Q L Вернуться в редактор из меню Esc Сохранить File/Save (F2) Найти Search/Find или Ctrl-Q F Найти и заменить Search/Replace или Ctrl-Q A Установить маркер Ctrl-K n *** Передвинуться с помощью табуляции Tab Режим табуляции Options/Environment/Editor/ Use tab characters * Режим без отступа Options/Environment/Editor/ Backspace Unindents * * Эта команда открывает диалоговое окно Editor Options, в котором можно установить соответствующие зависимые или независимые кнопки. ** Введите управляющие символы посредством первого нажатия Ctrl-P, затем нажмите требуемый управляющий символ. В зависимости от установок Вашего экрана, управляющие символы высветятся менее ярко как строчные или более ярко как прописные буквы. *** n - это число от 0 до 9. ___________________________________________________________________ Примечания: 1. Слово определено как последовательность символов, разделенных одним из следующих знаков: пробел < > . : () ^ ` * + - / $ # _ = | ~ ? ! " % & @ \ {} [] и всеми управляющими и графическими символами. 2. Многие из команд этой таблицы можно выполнить с помощью мышки. См. главу 7. Скачки курсора. Существуют три команды передвижения курсора, которые требуют дополнительных пояснений: Ctrl-Q B и Ctrl-Q K передвигают курсор к маркеру начало-блока или конец-блока. Обе эти команды работают даже в том случае, когда блок не видно (см. "Спрятать/показать блок" в таблице 8.2). Ctrl-Q B работает даже в том случае, если маркер конец-блока не установлен, а Ctrl-Q K работает даже тогда, когда не установлен маркер начало-блока. Ctrl-Q P передвигает курсор к последней его позиции перед последней командой. Эта команда особенно полезна, если была выполнена операция поиска или поиска-и-замены, а Вы хотели бы вернуться туда, где Вы находились перед выполнением поиска. Команды работы с блоками. Блок - это любое количество текста, от единственного символа до сотен строк, которое должно быть помечено специальными символами маркер-блока. Одновременно в окне может быть только один блок. Блок помечается путем помещения маркера начало-блока на первый символ и маркера конец-блока на последний символ требуемой части текста. Помеченный блок можно копировать, передвигать, удалять, выводить на печать или записывать в файл. Таблица 8.2. Команды работы с блоками. ___________________________________________________________________ Перемещение Команда(ы) Функция ___________________________________________________________________ Отметить блок ShiftЎ,ў,°,∙ Отмечает (высвечивает) блок по мере продвижения курсора. Отмеченный текст высвечивается с другой интенсивностью. Отметить слово Ctrl-K T Помечает отдельное слово как блок. Если курсор находится внутри слова, то оно будет помечено. Если курсор находится вне слова, то помечено слово, находящееся слева от курсора. Скопировать блок Edit/Copy, Копирует заранее помеченный блок Ctrl-Ins в карман и вставляет его в текущей позиции курсора. Исходный блок Edit/Paste, остается неизменным, а маркеры Shift-Ins блока помещаются вокруг новой копии блока. Если блок не помечен или курсор находится внутри помеченного блока, то ничего не произойдет. Переместить блок Edit/Cut, Перемещает заранее помеченный блок Shift-Del из исходной позиции в карман и вставляет в текущей позиции. Блок Edit/Paste, исчезает из исходной позиции, а Shift-Ins маркеры остаются вокруг блока на его новой позиции. Если блок не помечен, ничего не произойдет. Удалить блок Edit/Clear, Удаляет заранее помеченный блок. Ctrl-Del Для восстановления удаленного блока ничего не предусмотрено, Ctrl-K Y поэтому будьте внимательны при выполнении этой команды. Записать блок Ctrl-K W Записывает заранее отмеченный блок на диск в файл. Блок остается неизменным, а маркеры остаются на месте. При работе с этой командой появится подсказка для имени файла, в который будет записан блок. Файлу можно дать любое имя (расширение по умолчанию .PAS). Если Вы хотите задать имя файла без расширения, добавьте точку в конце имени. Примечание. Можно задать специфи- каторы для выбора файла; появится справочник. Если заданный файл уже существует,появится предупреждение до перезаписи этого файла. Если блок не помечен, ничего не произойдет. Считать блок Ctrl-K R Считывает файл с диска в текущий с диска текст в позиции курсора, как если бы он был блоком. Считанный текст затем помечается как блок. После задания этой команды выдастся подсказка для имени считываемого файла. Можно использовать специфи- каторы для выбора файла; появится справочник. Задаваемый файл может иметь любое правильное имя. Спрятать/Показать Ctrl-K H Приводит к включению или выключе- блок нию визуального изображения поме- ченного блока. Команды управления блоками (скопировать, переместить, удалить, напечатать и записать в файл) работают только тогда, когда блок высвечен.Перемещения курсора, относящиеся к блоку (скачок на начало/конец блока) работают независимо от того, спрятан блок или показан. Вывести блок Ctrl-K P Посылает помеченный блок активного на печать окна редактора на печать. Вывести на печать File/Print Посылает целый файл в активном окне редактора на печать. ___________________________________________________________________ Другие команды редактирования. Следующая таблица описывает некоторые команды редактирования более подробно. Эта таблица организована в лексикографическом порядке по имени команды. Таблица 8.3. Другие команды редактора. ___________________________________________________________________ Перемещение Команда(ы) Функция ___________________________________________________________________ Автоотступ Options/ Открывает диалоговое окно Editor Environment/ Options, в котором можно переключить Editor независимую кнопку Autoindent Mode. Обеспечивает автоматический отступ последовательных строк. Когда Autoindent активна, то отступ текущей строки повторяется на каждой следующей строке; т.е. при нажатии Enter курсор возвращается не к первому столбцу, а к начальному столбцу предыдущей непустой строки. Если Вы хотите изменить отступ, используйте ПРОБЕЛ и ў для выбора нового столбца. По умолчанию автоотступ включен. Найти маркер Ctrl-Q n Поиск десяти маркеров места (n - любое места число от 0 до 9) в тексте. Перемещает курсор к заранее установленному маркеру путем нажатия Ctrl-Q и номера маркера. Новый файл File/New Открывает новое окно. Открыть файл File/Open Позволяет загрузить существующий файл в (F3) окно редактора. Выйти из File/Quit Осуществляет выход из Turbo Pascal. редактора (Alt-X) Будет выдан запрос, хотите ли Вы сохранить файл на диске. Восстановить Edit/ Позволяет Вам отменить изменения, строку Restore Line сделанные над последней строкой. Строка восстанавливается в своем изначальном виде независимо от выполненных изменений. Эта команда работает только с последней модифицированной или удаленной строкой. Сохранить File/Save Сохраняет файл и возвращается в файл (F2) редактор. Задать место Ctrl-K n Помечает 10 мест в тексте путем нажатия Ctrl-K, сопровождаемой цифрой маркера (от 0 до 9). После отметки расположения можно работать в любом месте файла и затем легко вернуться к помеченному месту путем использования команды Ctrl-Q n (убедитесь, что номер маркера совпадает). В каждом окне можно помечать до 10 мест. Табуляция Tab По умолчанию табулирует на восемь столбцов в редакторе Turbo Pascal. Режим Options/ Открывает диалоговое окно Editor табуляции Environment/ Options, в котором можно установить Editor независимую кнопку Use Tab Character. Когда опция включена, можно вставлять символ табуляции (8-й символ ASCII); а когда отключена, табуляция автомати- чески вставляется как соответствующее число пробелов. ___________________________________________________________________ Поиск и замена. Команды Search/Find и Search/Replace позволяют осуществлять поиск (и возможно замену) строк. Строка поиска может содержать любые символы, включая управляющие. Можно ввести управляющие символы с префиксом Ctrl-P. Например, введите Ctrl-T, нажимая ключ Ctrl одновременно с Р, а затем нажав Т. Можно включить прерывание строки в строку поиска посредством задания Ctrl-M (возврат каретки). (Для поиска регулярных выражений посмотрите файл UTILS.DOC). Примечание. Строка поиска также называется строкой назначения. Следующие разделы перечисляют шаги для выполнения этих операций. Поиск и повторный поиск. 1. Выберите Search/Find. Это откроет диалоговое окно Find. 2. Наберите строку, которую Вы ищете, в окне ввода Text to Find. 3. Можно также установить различные опции поиска: - Зависимые кнопки Direction определяют направление поиска (вперед или назад). - Зависимые кнопки Scope определяют область в файле для поиска. - Зависимые кнопки Origin определяют место начала поиска. - Независимые кнопки Options определяют, будет ли поиск ориентирован только на целые слова или регулярные выражения. Используйте Tab или мышку для перехода между опциями. Для установки зависимых кнопок используйте ° и ∙, а для переключения независимых кнопок используйте клавишу ПРОБЕЛ. 4. Наконец, выберите кнопку ОК для выполнения поиска и Cancel для отказа от него. Turbo Pascal выполнит операцию. 5. Если Вы хотите повторить поиск по тому же элементу, используйте Search/Search Again. Поиск и замена. 1. Выберите Search/Replace. Это откроет диалоговое окно Replace. 2. Наберите строку, которую Вы ищете, в окне ввода Text to Find. 3. Нажмите Tab или использьуйте мышку для перемещения к окну ввода New Text. Наберите строку замены. 4. Затем Вы можете установить такие же опции поиска, как и в диалоговом окне Find. 5. Наконец, выберите кнопку ОК или Change All для начала поиска, и Cancel для отказа от него. Turbo Pascal выполнит операцию. Выбор Change All заменит все вхождения образца поиска. 6. Если Вы хотите прервать операцию, нажмите Esc в любой точке, когда поиск приостановился. Соответствие пар. Предположим, Вы делаете отладку исходного файла, в котором много функций, выражений в круглых скобках, вложенных комментариев и множество других конструкций, использующих пары разделителей. Фактически Ваш файл напичкан: - фигурными скобками: { и } - круглыми скобками: ( и ) - квадратными скобками: [ и ] - двойными кавычками: " - одиночными кавычками: ' Установление соответствия конкретных парных конструкций может быть весьма затруднительным. Предположим, у Вас имеется сложное выражение с большим количеством вложенных выражений, а Вы хотите убедиться в том, что все круглые скобки правильно сбалансированы. Или скажем Вы находитесь в начале функции, занимающей несколько экранов, а хотите перейти на конец этой функции. С командами проверки соответствия пар Turbo Pascal эта проблема решается просто. Нужно выполнить следующие шаги: 1. Поместить курсор на разделитель (например, на открывающую фигурную скобку какой-то функции, занимающей несколько экранов). 2. Чтобы определить местоположение пары для выбранного разделителя, просто нажмите Ctrl-Q[. (В заданном примере, пара будет находиться в конце функции). 3. Редактор немедленно передвинет курсор на разделитель, соответствующий указанному. Если он передвинется на разделитель, по Вашим предположениям являющийся парой для указанного, то Вы будете знать, что код, находящийся между этими двумя разделителями, не содержит непарных разделителей этого типа. Если он передвинется на неправильный разделитель, значит в River City беда; теперь Вам нужно проследить по исходному коду причину несоответствия. Мы рассказали Вам основные команды Turbo Pascal "Match Pair"; теперь сообщим Вам некоторые подробности о том, что можно и чего нельзя сделать с помощью этих команд, и несколько нюансов, которые нужно знать. Этот раздел охватывает несколько моментов: - На самом деле существуют две команды редактирования для проверки соответствия пар: одна для проверки вперед (Ctrl-Q[), а другая для проверки соответствия назад (Ctrl-Q]). - Если для выбранного разделителя не нашлось пары, то редактор не переместит курсор. Направленное и ненаправленное соответствие. Две команды соответствия пар необходимы, потому что некоторые разделители являются ненаправленными. Например, Вы отдали команду редактору найти пару для открывающей фигурной скобки ({) или открывающей квадратной скобки ([). Редактор знает, что соответствующий разделитель не может находиться ПЕРЕД выбранным разделителем, поэтому он осуществляет поиск вперед. Если Вы отдали команду редактору найти пару для закрывающей фигурной скобки (}) или закрывающей круглой скобки ()), то он знает, что парная скобка не может находиться ПОСЛЕ выбранного разделителя, поэтому автоматически осуществляет поиск пары назад. Вывод: открывающие фигурные и квадратные скобки и закрывающие фигурные и круглые скобки являются направленными; редактор знает, каким способом искать пару, так что не беспокойтесь о том, какую именно команду соответствия пар задать. Однако, если Вы отдатите редактору команду найти пару для двойной (") или одиночной (') кавычки, то он не знает, в каком направлении идти. Вы должны задать направление поиска посредством задания корректной команды соответствия пар. Если Вы зададите команду Ctrl-Q Ctrl-[, редактор будет осуществлять поиск пары вперед; если Вы зададите команду Ctrl-Q Ctrl-], то он будет искать пару назад. Вывод: двойные и одиночные кавычки являются ненаправленными. Нужно задавать корректную команду соответствия пары. Следующая таблица дает краткий обзор пар разделителей, предполагается ли для них направление поиска и могут ли они быть вложенными. Таблица 8.4. Пары разделителей. ___________________________________________________________________ Пара разделителей Подразумевается ли Могут ли они быть направление? вложенными? ___________________________________________________________________ { } Да Да ( ) Да Да [ ] Да Да " " Нет Нет ' ' Нет Нет ___________________________________________________________________ Вложенные разделители. Вложенность означает, что когда редактор осуществляет поиск пары направленного разделителя, он запоминает, в какое количество уровней разделителей он вошел и вышел во время поиска. Лучше всего это иллюстрируется на примере: согласованная пара согласованные пары : : : : ...:... ...:... ....:.... : : : : : : : : : : arr1[arr2[x]] ( (x > 0) && (y < 0) ) : : : : :.: :........................: : : согласованная пара согласованная пара Рисунок 8.1. Поиск пары для квадратных или круглых скобок.