Организация экрана

На текстовом терминале  Emacs занимает весь экран.   В системе  X  Windows Emacs создает для себя свои X-окна.  Мы используем термин фрейм для обозначения всего текстового экрана или всего X-окна, используемого Emacs. Оба вида фреймов используются в Emacs одинаково для отображения вашего текста.  Обычно Emacs запускается только с одним фреймом,  но при желании вы можете  создать дополнительные. См.  Глава 17 [Фреймы], с. 147.

Когда вы запускаете Emacs, весь фрейм, за исключением первой и последней строки, отводится для редактируемого текста.   Эта область называется окном.  Первая строка называется полоской меню, а последняя — это особая эхообласть  или окно минибуфера, где появляются запросы, и куда вы можете ввести ответы. Дальнейшие  сведения об этих специальных строках смотрите ниже.

Текстовое окно может быть поделено по горизонтали или вертикали на несколько других окон, каждое из которых может быть использовано для отдельного файла (см. Глава 16 [Окна], с. 141). В данном руководстве слово “окно” всегда обозначает часть фрейма внутри Emacs.

То окно, в котором находится курсор, называется выбранным окном; в нем идет редактирование. Большинство команд Emacs неявно относятся в тексту в выбранном окне (хотя команды мыши как правило действуют в том окне,  в котором вы щелкнули, вне зависимости от того, выбрано оно или нет).  Остальные окна существуют просто для справки, пока вы не выберете  одно из них.  Если вы используете несколько фреймов в системе X Windows, то передача фокуса ввода некоторому фрейму выбирает окно в этом фрейме.

Последняя строка каждого текстового окна называется строкой режима, которая описывает происходящее  в этом окне.    Она выводится в инверсном виде,  если терминал поддерживает это, и содержит текст,  который начинается при старте  Emacs со строки

‘-:  *scratch*’.  Строка режима показывает сведения о текущем состоянии, например, какой буфер  показан в окне  над ней, какие основные и второстепенные  режимы в нем используются, и содержит ли этот буфер несохраненные изменения.

1.1  Точка

Курсор терминала внутри Emacs показывает позицию, в которой будет выполняться команда редактирования. Это позиция именуется точкой. Многие команды Emacs перемещают точку по тексту, так что вы имеете возможность редактировать  в любом месте. Вы также можете установить точку, щелкнув первой кнопкой мыши.

Когда курсор указывает на знак, то следует думать, что точка находится между двумя знаками; она расположена перед знаком, над которым появляется курсор. Например, если ваш текст выглядит как ‘frob’, а курсор находится над ‘b’, то точка расположена между

‘o’ и ‘b’.  Если вы вставите в этой позиции знак ‘!’, то получите ‘fro!b’, с точкой между

‘!’ и ‘b’. Таким образом, курсор останется над ‘b’, как и раньше.

Иногда говорят “курсор”, имея в виду точку, или говорят о командах движения точки как о командах “движения курсора”.

Терминалы имеют только один курсор, и когда происходит процесс вывода, курсор должен находиться там, где идет набор. Это не означает, что точка перемещается.  Это значит лишь то, что Emacs может показать вам позицию точки, только когда терминал не работает.

Если вы редактируете в Emacs несколько файлов, каждый в своем буфере, то всякий буфер имеет свою собственную позицию точки. Буфер, который не показывается  в данное время, запоминает, где находится точка, на случай, если вы снова выведете его на экран.

Когда фрейм разбит на несколько окон, каждое из них имеет свою собственную позицию точки. Курсор же показывает позицию точки в выбранном окне. Этим способом вы также можете узнать, которое из окон выбрано. Если один и тот же буфер появляется  более чем в одном окне, то каждое из них имеет свою позицию точки.

Если есть несколько фреймов, каждый из них может отобразить один курсор. Курсор в выбранном  фрейме заполнен  цветом; курсор в других  фреймах — это пустая клетка, которая появляется в том окне, которое было бы выбранным,  если бы вы передали фокус ввода этому фрейму.

Термин ‘точка’ происходит от названия знака ‘.’, который был командой TECO (язык, на котором был написан первоначальный Emacs) для получения значения величины, называемой теперь ‘точкой’.

1.2  Эхообласть

Строка внизу фрейма (под строкой режима) называется эхообластью. Она использует-

ся для показа небольших фрагментов текста в нескольких целях.

Эхо обозначает отображение набираемых вами знаков. Вне Emacs, операционная систе-

ма обычно отображает  весь ваш ввод. Emacs управляет эхо иначе.

Emacs никогда не повторяет команды, состоящие из одиночного знака, а команды, состоящие из нескольких, повторяются, только если вы останавливаетесь в процессе их набора. Как только вы останавливаетесь  более чем на секунду в середине команды, все знаки этой команды сразу же  отображаются. Это служит подсказкой для окончания команды. Как  только включается эхо, окончание команды отображается  немедленно в процессе набора. Такое поведение предназначено  для того, чтобы уверенный пользователь получал быстрый результат, в то же  время это позволяет неуверенным пользователям получить максимум обратной связи. Вы можете изменить это поведение, установив  особую переменную (см. Раздел 11.7 [Переменные изображения],  с. 84).

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

Некоторые команды печатают в эхо-области информационные сообщения. Они похожи на сообщения об ошибках, но без звукового сигнала, и набранная  ранее информация  не сбрасывается. Иногда эти сообщения говорят вам, что команда выполнена, в случае, если это явно не наблюдается  при просмотре редактируемого текста. Иногда единственной целью команды является печать сообщения, дающего вам специфическую информацию.  Например, команда С-х = используется, чтобы напечатать  сообщение, описывающее позицию точки в тексте и ее текущий столбец в окне. Команды, требующие для своего выполнения длительное время, часто выводят во время работы сообщения, заканчивающиеся на ‘…’, а в конце, когда они закончились,  слово ‘done’.

Информативные   сообщения из  эхо-области сохраняются  в   буфере, называемом

‘*Messages*’.     (Мы   еще   не   объяснили, что  такое  буфер;  для  получения большей информации о них смотрите Глава 15 [Буферы], с. 135.) Если вы пропустили сообщение, которое недолго отображалось на экране, вы можете переключиться в буфер ‘*Messages*’ и снова посмотреть его.   (Последовательные  сообщения о промежуточных  результатах часто сворачиваются в этом буфере в одно.)

Размер буфера ‘*Messages*’ ограничен определенным числом строк, это число задает переменная message-log-max. Как только буфер дорастает до этого размера, каждая новая строка удаляет одну строку из начала. См. Раздел 31.2 [Переменные], с. 343, чтобы узнать, как установить переменные, такие как message-log-max.

Эхо-область используется также для отображения  минибуфера: окна, которое используется для считывания аргументов для команд, например, имени файла для редактирования. Когда используется минибуфер, эхо-область начинается со строки подсказки, которая

обычно кончается двоеточием; кроме того, в этой строке появляется курсор, так как она становится выбранным окном. Вы всегда можете выйти из минибуфера, набрав C-g. См. Глава 5 [Минибуфер], с. 45.

1.3  Строка режима

Последняя строка в каждом окне называется строкой режима, она описывает происходящее в этом окне.  Когда имеется только одно текстовое окно, строка режима находится непосредственно над эхо-областью; это предпоследняя строка фрейма. Строка режима показывается в инверсном изображении, если терминал поддерживает это, и начинается и кончается дефисами.

Обычно строка режима выглядит так:

-ск:из    буф          (основной  второстепенные)-стр-поз—-

Это дает информацию о буфере, отображенном  в окне:  его имя, используемые основной и второстепенный режимы, изменялся ли текст буфера, и как далеко вниз по буферу вы сейчас находитесь.

из содержит две звездочки ‘**’, если текст в буфере редактировался  (буфер “изменен”),

или ‘-’, если буфер не редактировался. Для буферов, доступных только для чтения, это

‘%*’, если буфер изменен, и ‘%%’ в противном случае.

буф — это имя буфера данного окна. Чаще всего оно совпадает с именем файла, который вы редактируете. См. Глава 15 [Буферы], с. 135.

Буфер, находящийся в выбранном окне (в том окне, в котором находится курсор), является также выбранным  буфером Emacs — тем буфером, где происходит редактирование. Когда  мы говорим,  что  некоторые команды выполняются “для  буфера”,  мы говорим  о текущем выбранном буфере.

стр — это ‘L’, за которой следует текущей номер строки, где находится точка.  Этот номер выводится, когда включен режим Line Number (обычно это так).   Вы можете  по желанию показать также и номер текущего столбца, включив режим Column Number (он не включается  по умолчанию, потому что работает несколько медленнее). См. Раздел 11.5 [Возможности строки режима], с. 83.

поз говорит  вам, есть ли еще  текст  сверху от начала либо ниже  конца окна.  Если буфер небольшой  и умещается в окне  целиком, то поз имеет значение ‘All’.  Иначе он имеет значение ‘Top’, если вы смотрите начало файла, ‘Bot’, если конец, либо ‘nn%’, где nn означает количество процентов файла, находящееся над верхом окна.

основной — имя основного режима, действующего в этом буфере. В любой момент каждый буфер находится в одном и только одном из возможных основных режимов. Существующие основные режимы включают режим Fundamental (наименее  специализированный), режим Text, режим Lisp, режим С, режим Texinfo и многие другие. См.  Глава 19 [Основные режимы], с. 175, чтобы подробнее узнать о том, чем режимы отличаются, и как выбрать один из них.

Некоторые основные режимы показывают после имени дополнительные сведения. Например, буферы Rmail показывают номер текущего сообщения и общее число сообщений. Буферы Compilation и Shell отображают состояние подпроцесса.

второстепенные — это список некоторых второстепенных режимов, которые включены в данный момент в буфере выбранного  окна. Например, ‘Fill’ значит, что включен режим Auto  fill.   ‘Abbrev’ означает, что  включен режим Word  Abbrev.   ‘Ovwrt’  означает, что включен режим Overwrite.  См.  Раздел 31.1 [Второстепенные режимы], с. 341, для более подробной информации.   ‘Narrow’ означает, что область редактирования отображаемого буфера ограничена  только частью его текста. На самом деле это не второстепенный режим, но действует похоже.    См.   Раздел 30.8 [Сужение], с. 335.  ‘Def’  означает, что  сейчас определяется макрос клавиатуры. См. Раздел 31.3 [Макросы клавиатуры], с. 353.

Кроме того, если в данный момент Emacs находится внутри уровня рекурсивного редактирования, то внутри круглых скобок, которые окружают имена режимов, появляются квадратные скобки (‘[…]’).   Если Emacs находится на некотором уровне рекурсивного редактирования внутри другого, то появляются двойные квадратные скобки, и так далее. Так как уровень рекурсивного редактирования относится ко всему Emacs, а не к каждому буферу в отдельности, то квадратные скобки появляются или в строках режима всех окон или ни в одной из них. См. Раздел 30.12 [Рекурсивное  редактирование],  с. 338.

Неоконные терминалы могут показать только один фрейм Emacs в одно время (см. Глава 17 [Фреймы], с. 147). На таких терминалах строка режима отображает имя выбранного фрейма, после из. Начальный  фрейм называется ‘F1’.

ск обозначает систему кодирования, которая используется в редактируемом  файле. Дефис указывает на состояние, устанавливаемое по умолчанию: отсутствие преобразования, за исключением преобразования конца строки, если содержимое  файла требует этого.  ‘=’ обозначает полное отсутствие преобразований. Не столь простые преобразования представляются различными буквами — например, ‘1’  относится к  ISO Latin-1.   См.   Раздел 18.7 [Системы кодирования], с. 165, для подробной информации.  Если вы используете метод ввода, к началу ск добавляется строка в форме ‘в>’; в идентифицирует метод ввода. (Некоторые методы ввода показывают вместо ‘>’ знак ‘+’ или ‘@’.) См. Раздел 18.4 [Методы ввода], с. 163.

Когда  вы пользуетесь  текстовым терминалом (не  оконной системой), ск использует три знака для описания, соответственно, системы кодирования для ввода с клавиатуры, системы кодирования для терминального вывода и системы кодирования, применяемой в редактируемом  файле.

Когда выключена поддержка многобайтных знаков, ск не появляется  совсем. См. Раз-

дел 18.2 [Включение многобайтных знаков], с. 161.

Двоеточие после ск может меняться в некоторых обстоятельствах на другой знак. Emacs использует для разделения строк в буфере перевод строки. Некоторые файлы используют другое соглашение о разделении строк: возврат каретки и перевод строки (соглашение MSDOS) или просто возврат каретки (соглашение Macintosh). Если файл в буфере использует возврат каретки и перевод строки, двоеточие заменяется на обратную косую черту (‘\’) или

‘(DOS)’, в зависимости от вашей операционной системы. Если в этом файле применяется просто возврат каретки, то двоеточие  заменяется на косую черту (‘/’)  или ‘(Mac)’.   На некоторых системах Emacs позывает вместо двоеточия строку ‘(Unix)’, даже для файлов, использующих для разделения строк перевод строки.

Вы  можете  настроить способ отображения в строке  режима каждого  из форматов разделения строк, устанавливая  переменные eol-mnemonic-unix, eol-mnemonic-dos, eolmnemonic-mac  и eol-mnemonic-undecided  равными строкам, которые вы находите  подходящими.  См.  Раздел 31.2 [Переменные],  с. 343, где  объясняется,  как  устанавливать переменные.

См.   Раздел 11.5 [Возможности строки режима], с. 83, подробности о возможностях добавления  в строку  режима другой полезной информации,  например номера текущего столбца в точке, текущего времени и сообщения о приходе почты.

1.4  Полоска меню

Каждый фрейм Emacs обычно имеет сверху полоску меню, которую вы можете использовать для произведения определенных действий. Нет необходимости перечислять их здесь, потому что вам проще посмотреть самим.

Когда вы используете оконную систему, вы можете выбирать команды из полоски меню при помощи мыши. Направленная вправо стрелка после пункта меню указывает, что этот пункт ведет ко вторичному меню; ‘…’ в конце означает, что до начала работы эта команда считает аргументы с клавиатуры.

Чтобы просмотреть  полное имя команды и документацию к пункту меню, напечатайте C-h k и затем выберите нужный пункт  с помощью мыши обычным способом. (см.  Раздел 7.1 [Справка о ключах], с. 56).

На текстовых терминалах, где  нет мыши, вы можете  использовать меню, напечатав M-‘  или hF10i  (они запускают команду tmm-menubar).   Эта команда входит в режим, где вы можете выбрать пункт  меню с помощью клавиатуры.  Предварительный выбор показывается в эхо-области. Вы можете использовать правую и левую курсорные стрелки для движения по меню к разным пунктам.  Когда вы нашли нужный вам пункт,  напечатайте hRETi, чтобы выбрать его.

К каждому пункту  меню также  приписывается буква или цифра; обычно это первая первая буква какого-то слова из имени пункта. Эта буква или цифра отделяется от имени значком ‘=>’. Для выбора пункта вы можете напечатать его букву или цифру.

Некоторые команды в меню имеют также обычные привязки к ключу; в таком случае после самого пункта перечисляется один эквивалентный ключ в круглых скобках.

Источник: Ричард Столмен, Руководство по GNU Emacs

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий