Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Турбо Си 2.0_TC01.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
2.68 Mб
Скачать

Часть IV. Дополнительные возможности и команды

--------- редактирования.

-----------------------------------------------------------------

К некоторым полезным возможностям редактирования Турбо Си,

которые можно использовать в интегрированной среде, нельзя полу-

чить доступ из системы меню. В этой части содержится информация о

том, каким образом использовать эти возможности при редактирова-

нии исходного текста.

Дополнительные сведения о табуляции

-----------------------------------------------------------------

1. В случае, когда режим табуляции редактора выключен, нажав

клавишу Тab можно вставить достаточное количество пробелов с тем,

чтобы переместить курсор на следующий символ табуляции. Позиции

табуляции выравниваются по первой букве каждого слова в строке

текста над текущей строкой. (При включенном режиме табуляции на-

жатие клавиши Tab позволяет вставить достаточное пространство для

перемещения курсора на следующую позицию табуляции. Как определе-

но Options/Environment/Tab Size по умолчанию 8 пробелов.)

2. Если вы пересылаете выделенный блок текста из редактора в

файл (или в PRN) с помощью команды Ctrl-K W, редактор обращается

со всеми символами табуляции как с клавишами табуяции и описывает

(или погашает) их в виде последних. Это в целом приводит к уста-

новке позиций табуляции в каждом восьмом столбце. Однако, при пе-

ресылке текста из редактора на принтер с помощью команды Ctrl-K P

редактор обращается со знаками табуляции как с символами табуля-

ции и печатает их в виде соответствующего количества пробелов

(равному размеру табуляции, выбор которой выполняется с помощью

Options/Environment/Tab Size).

- 381,382 -

Автоматическое смещение, смещение влево

и оптимальное заполнение

-----------------------------------------------------------------

Автоматическое смещение является характерной чертой редакти-

рования и, следуя жесткому возврату, устанавливает курсор под

первым значащим символом в предыдущей заполненной строке.

При первоначальном запуске TCINST (программа настройки Турбо

Си) режим автоматического смещения вправо включается автоматичес-

ки по умолчанию, потому что TCINST Options/Environment /Options

определяет положение флага Editor/Autoindent в позиции ON (Вклю-

чено).

В последующем, в окне редактирования вы можете включить или

выключить этот режим, нажав Ctrl-O I либо Ctrl-Q I (сначала наж-

мите Ctrl и, удерживая ее в этом положении, нажмите O либо Q, а

затем I).

Смещение влево также является особенностью редактирования и

позволяет смещать курсор на один и более пробелов влево на одну

линию с прежнем уровнем смещения.

a = 3;

i - 1;

while (i <= 25)

{

product = a * i;

printf("%d. %d", i product);

++i;

}

<--- Автоматическое смещение возвращает вас в этот стол-

бец.

<------ Нажав клавишу забоя (Backspace), вы возвратитесь в

этот столбец.

Рисунок 5.24. Работа режима смещения влево.

Для использования режима смещения влево установите курсор на

первый значащий символ строки либо на пустую строку. Нажмите кла-

вишу Backspace (возврата). Курсор переместится на прежний уровень

смещения. В этом случае кавиша Backspace может перемещать курсор

более, чем на один пробел.

- 383,384 -

Режим оптимального заполнения не действует до тех пор, пока

не будет включен режим табуляции. С помощью этих двух режимов на-

чало каждой строки со смещением вправо либо влево оптимально за-

полняется символами табуляции и пробелами. Это позволяет писать

строки с минимальным количеством символов. Включение и выключение

режима оптимального заполнения выполняется с помощью Ctrl-O F.

Примеры:

1. Options/Environment/Tab Size установлен на 8 (позиции та-

буляции в стобцах 1, 9, 17, 25...); режимы смещения вправо, табу-

ляции и вставки включены; курсор находится в конце строки, начи-

нающейся в столбце 27.

а) Нажмите ввод для вставки новой строки, редактор устанавли-

вает курсор в столбце 27 на новой строке.

б) Не перемещая курсор, наберите символ на новой строке.

в) Редактор заполнит начало новой строки тремя символами табу-

ляции (до символа 25) и двумя пробелами (до столбца 27).

Таким образом, общее количество вставленных символов запол-

нения составило 5.

2. Если при тех же условиях Options/Environment/Tab Size ус-

тановлен на 5 (позиции табуляции в столбцах 1, 6, 11, 16, 21,

26...), то редактор добавит 5 символов табуляции (до столбца 26)

и один пробел.

3. Или, если Tab Size установлен на 6 (позиции табуляции на

1, 7, 13, 19, 25...) и вы перемещаете курсор в столбец 18 прежде,

чем набрать первый символ, редактор дополнит два символа табуля-

ции (до 13-го столбца) и пять пробелов (до столбца 18).

Определение парности (Match Pair)

-----------------------------------------------------------------

Эта операция выполняется во время отладки исходного файла, в

котором множество функций, выражений, комментариев и ряд других

конструкций, для которых используются парные разделители. Дейс-

твительно, в вашем файле встречаются:

- 385,386 -

- фигурные скобки {};

- угловые скобки <>;

- круглые скобки ();

- квадратные скобки [];

- маркеры комментариев /**/;

- двойные кавычки "";

- одинарные кавычки ''.

Поиск сравнения отдельных парных конструкций выполняется до-

вольно хитроумно. Предположим, что вы имеете сложное выражение с

вложенными подвыражениями. Вы хотите узнать, имеет ли это выраже-

ние несбалансированные скобки. Или, скажем, вы находитесь в нача-

ле функции, которая проходит через несколько экранов, а вам пот-

ребовалось перейти сразу в конец этой функции. Решение этих задач

с помощью команд сравнения парности Турбо Си в ваших руках. Вы

должны выполнить следующие операции:

1. Поместите курсор на разделитель, которым вы интересуетесь

(например, открытая скобка какой-то функции, которая проходит че-

рез ряд экранов).

2. Для поиска парного разделителя к выбранному достаточно

нажать Ctrl-Q Ctrl-[. (В данном примере закрывающая скобка должна

быть в конце функции).

3. Редактор немедленно переместит курсор на разделитель, ко-

торый соответствует выбранному вами. Если курсор переместится на

разграничитель, который вы имели ввиду, значит этот кусок вашей

программы не содержит непарных разделителей этого типа. Если кур-

сор переместится на неправильный разделитель, то у вас ошибка.

Теперь все, что от вас требуется, это найти ее.

Некоторая информация об определении парности

-----------------------------------------------------------------

Мы уже рассказали вам основы команд "Match Pair" Турбо Си.

Теперь хотим дать информацию, что вы сможете и не сможете делать

с помощью этих команд. Мы хотим также обратить ваше внимание на

некоторые тонкости. Это касается следующих вопросов:

1. Есть две редактирующие команды Match Pair: одна для вы-

- 387,388 -

полнения сравнения парности вперед (Ctrl-Q Ctrl-[), дру-

гая для сравнения парности назад (Ctrl-Q Ctrl-]).

2. Способ, с помощью которого редактор ищет разграничители

комментария (/**/), мало чем отличается от способа поиска

других типов разделителей.

3. Если парный разделитель к тому, который вы выбрали, не

найден, редактор не переместит курсор.

Дирекционное и недирекционное сравнение

-----------------------------------------------------------------

Необходимо использовать две команды Match Pair в связи с

тем, что некоторые разграничители дирекционные (указывающие нап-

равление поиска), другие - нет.

Например, предположим, вы задаете редактору поиск, указывая

на открывающуюся фигурную ({) или квадратную ([) скобку. Редактор

знает, что закрывающаяся скобка может быть только впереди, и вы-

бирает поиск в этом направлении. Открывающиеся фигурные и квад-

ратные скобки являются дирекционными. Редактор знает, в каком

направлении вести поиск, поэтому нет различия в том, какую коман-

ду задавать. Вы можете задать любую команду, при этом редактор

будет вести поиск в правильном направлении.

Аналогично, если вы зададите закрывающуюся фигурную (}) или

квадратную (]) скобку, то редактор, зная в каком направлении на-

ходится открывающая скобка, ведет поиск назад. В этом случае,

также нет различия, какую задавать команду. Редактор всегда будет

вести поиск в правильном направлении.

Однако, если вы зададите редактору поиск двойных (") или

одинарных (') кавычек, то он не будет знать, в каком направлении

искать пару. Вы должны задать направление поиска путем подачи

правильной команды Match Pair. Если вы задаете команду CtrlQ Ctrl

-[, то редактор будет вести поиск вперед по программе, а если ко-

манду Ctrl-Q Ctrl-], то назад.

В следующей таблице приведены парные разграничители. Опреде-

лены разграничители, являющиеся дирекционными и вложенными (опре-

деление вложенных разграничителей будет дано сразу после табли-

цы).

- 389,390 -

-----------------------------------------------------------------

Парные разграничители Определяют направ- Являются

ление поиска вложенными

-----------------------------------------------------------------

{ } Да Да

( ) Да Да

[ ] Да Да

< > Да Да

/* */ Да Да и нет

" " Нет Нет

' ' Нет Нет

-----------------------------------------------------------------

Вложенные разграничители

-----------------------------------------------------------------

Что означает термин "вложенные"? Проще говоря, при поиске

дирекционного разделителя редактор постоянно ведет счет, через

сколько открывающихся и закрывающихся парных разделителей он про-

шел во время поиска.

- 391,392 -

Это может быть проиллюстрировано на некоторых примерах.

сравненная пара сравненная пара сравненная пара

| | |

--- ------- -------

| | | | | |

arrl[arr2[x]] ( (x > 0) && (y < 0) )

| | | |

--------- ----------------------

| |

сравненная пара сравненная пара

Рисунок 5.25. Поиск и сравнение квадратных

и круглых скобок.

Ведение поиска разграничителей комментариев

-----------------------------------------------------------------

В связи с тем, что разграничитель комментариев состоит из

двух знаков / (слэша, наклонной черты вправо) и * (звездочки), вы

должны быть внимательны при задавании этого сложного разделителя.

Еси вы не выделите подсветкой оба знака, то редактор распознает

только первый знак (слэш (/) в случае, если вы задаете /*, либо

звездочку (*), если вы задаете */). Если вы поместите курсор на

втором знаке в этих разделителях, то редактор не будет знать нап-

равление поиска, а значит и поиска не будет.

Кроме того, как видно из вышеприведенной таблицы, в некото-

рых случаях разделители комментариев бывают вложенными, а в неко-

торых случаях нет. Это не является капризом или невозможностью

решения. Это используется для проверки в различных случаях. Прог-

раммы Си, совместимые с ANSI, не могут содержать вложенные ком-

ментарии, а Турбо Си с помощью O/C/S/Nested Comments может. Эта

особенность влияет на возможность определения наличия вложенных

разделителей комментариев при их поиске и определении парности.

1. Если Options/Compiler/Source/Nested Comments в положении

- 393,394 -

ON (Включено), то редактор обращается с разделителями

комментариев как с вложенными и выполняет учет количества

открывающихся и закрывающихся парных разделителей.

2. Если Options/Compiler/Source/Nested Comments в положении

OFF (Выключено), то редактор не обращается с разделителя-

ми комментариев как с вложенными. Когда задается раздели-

тель /*, то редактор ищет и выдает первый же разделитель

*/ (или наоборот).

Примечание: Если несравниваемые разделители того же типа,

что заданы, встречаются в комментариях, кавычках, сегментах ус-

ловной компиляции между сравниваемыми парами, то это влмяет на

поиск.

Некоторые различия при поиске вложенных разделителей коммен-

тариев приведены ниже.

/* /* /* /* Вложенные комментарии */ */ */ */

| |

---Заданный уровень Найденный уровень

сравнения сравнения

Рисунок 5.26. Режим O/C/S/Nested Comments включен.

Поиск вперед с помощью ^Q^[

Примечание: Обратный поиск при включенном режиме O/C/S/

Nested Comments от найденного разделителя */ приведет к заданному

разделителю /*.

- 395,396 -

/* /* /* /* Вложенные комментарии */ */ */ */

| |

---Заданный уровень Найденный уровень

сравнения сравнения

Рисунок 5.27. Режим O/C/S/Nested Comments выключен.

Поиск вперед с помощью ^Q^[

/* /* /* /* Вложенные комментарии */ */ */ */

| |

---Заданный уровень Найденный уровень

сравнения сравнения

Рисунок 5.28. Режим O/C/S/Nested Comments выключен.

Поиск назад с помощью ^Q^]

Назначение редактирующих ключей

-----------------------------------------------------------------

Интерактивный редактор Турбо Си обеспечивает множество функ-

ций редактирования, которые определены конкретными клавишами и

сочетаниями клавиш. Подробно это описано в Приложении A Справоч-

ного руководства по Турбо Си.

TCINST является необязательной пользовательской программой

Турбо Си. Одно из ее меню позволяет вам определить клавиши для

функций редактирования Турбо Си. Это известно как переназначение

клавиш.

Примечание: Указанная операция подробно описана в Приложении

F Справочного руководства по Турбо Си, поэтому здесь дано только

общее описание.

Для изменения команд редактирования Турбо Си необходимо вы-

полнить следующие основные процедуры:

1. Загрузить TCINST.EXE (на приглашение ДОС наберите tcinst

и нажмите Ввод). Из основного меню пользователя выберите меню ко-

- 397,398 -

манд редактора (Editor commands). Перед вами появится экран наст-

ройки редактора с тремя колонками текста.

- В первой (левой) колонке описываются все доступные функции ин-

терактивного редактора TC .

- Во второй колонке описываются первичные управляющие клавиши: то

есть клавиши и их комбинации, которые вы должны нажать для вы-

полнения определенных функций редактора.

- В третьей колонке описаны вторичные управляющие клавиши: это

альтернативные, т.е. необязательные нажатия клавиш, нажав кото-

рые, вы вызываете определенные функции редактора.

2. Нижняя строка текста на экране Install Еditor описывает

клавиши, которыми вы можете изменять содержимое из первой или из

второй колонки. При нажатии Ввод, вы входите в режим модификации,

затем, используя клавиши со стелками влево и вправо, можете пе-

редвинуть яркую полосу к первичной или вторичной колонке.

3. Используя клавиши со стрелками вверх и вниз, высветите

команду редактирования, "горячую" клавишу которой вы хотите пере-

назначить.

4. Для выбора высвеченной команды редактирования нажмите

Ввод; заданная для данной команды последовательность нажатия кла-

виш высветится в всплывающем окне.

5. Для стирания отдельных нажатий клавиш справа налево отно-

сительно всплывшего окна используйте клавишу Забой, а для очистки

всей последовательности нажатий - F3.

6. Комбинации нажатий клавиш предоставляются в трех видах:

WordStar-like (в стиле WordStar), Ignore case (с игнорированием

регистра) и Verbatim (в буквальном). Нажатие F4 циклически пока-

жет их все до тех пор, пока требуемая комбинация не станет выде-

лена в нижней строке экрана. Для получения большей информации об

этих трех режимах смотрите Приложение F Справочного руководства

Турбо Си".

7. Введите новое описание последовательности нажатий для

данной функции редактирования (максимально до 6 нажатий). При не-

обходимости стереть последний введенный символ используйте Забой.

Если же вы захотите отказаться от назначения новой клавиши для

- 399,400 -

данной функции, то для восстановления первоначального назначения,

нажмите F2 или Esc - для восстановления и выхода из режима редак-

тирования последовательности нажатия клавиш.

8. Как только вы будете удовлетворены новым (или восстанов-

ленным) назначением клавиш, нажмите Ввод для его запоминания.

9. Когда вы закончите назначение клавиш, для выхода из экра-

на настройки редактора нажмите Esc, и вы вернетесь в главное меню

TCINST.

Замечание: если вы переопределите стандартные "горячие" клю-

чи Турбо Си, то при нахождении в редакторе вы не сможете ими вос-

пользоваться.