Основные  команды редактирования – ЧАСТЬ 3

Вы также можете видеть номер текущей строки в строке режима; См. Раздел 1.3 [Строка режима], с. 25. Если вы сузили буфер, то номер строки в строке режима отсчитывается относительно доступной части (см. Раздел 30.8 [Сужение], с. 335).

В противоположность этому, what-page подсчитывает номер строки и относительно суженной области, и относительно всего буфера и показывает  оба числа. См. Раздел 21.4 [Страницы], с. 184.

По этому поводу мы могли бы упомянуть М-= (count-lines-region), которая печатает число строк в области (см. Глава 8 [Пометка], с. 63). См. Раздел 21.4 [Страницы], с. 184, для информации о команде C-x l, которая считает строки на текущей странице.

Команда С-х = (what-cursor-position) может быть использована для узнавания столбца, в котором находится курсор, а также другой разнообразной информации о точке.  Она печатает в эхо-области строку, которая выглядит следующим образом:

Char:  c (0143,  99,  0x63)  point=24781  of  31832(78%)  column 52

(На самом деле,  это результат, полученный, когда точка была перед словом ‘column’ в самом примере.)

Четыре величины после ‘Char:’  описывают знак, следующий  за точкой;  первое показывает его, а остальные дают его восьмиричный, десятичный и шестнадцатиричный код. Для многобайтного не-ASCII-знака после этих чисел следует ‘ext’  и шестнадцатиричное представление в системе кодирования данного буфера, если эта система кодирования безопасно может представить этот знак в одном байте (см. Раздел 18.7 [Системы кодирования], с. 165). Если код знака больше одного байта, Emacs показывает ‘ext  …’.

После ‘point=’ следует позиция точки,  выраженная  через количество знаков.  Началу буфера присваивается  позиция 1, следующему знаку 2 и так далее.  Следующее,  большее число означает общее число знаков в буфере. Потом в круглых скобках находится позиция, выраженная как процент от общего размера.

После ‘column’ пишется горизонтальная позиция точки, в столбцах от левого края окна.

Если буфер был сужен, и некоторое количество текста в начале и в конце  временно недоступно,  то С-х = печатает дополнительный текст,  описывающий текущие границы доступа. Например, команда может показать такое:

Char:  C  (0103,  67,  0x43)    point=252  of  889(28%) <231 599>   column 0

где два добавленных числа дают наименьшую и наибольшую допустимые для точки позиции знаков. Доступными являются знаки между двумя этими позициями. См. Раздел 30.8 [Сужение], с. 335.

Если точка находится в конце буфера (или в конце видимой части), в выводе С-х = не описывается знак, стоящий после точки. Вывод может выглядеть так:

point=26957  of  26956(100%)    column 0

C-u C-x = показывает вместо координат и столбца дополнительную информацию о знаке: имя набора знаков и коды данного знака в этом наборе; ASCII-знаки идентифицируются как принадлежащие набору знаков ASCII.  Кроме  того, после ‘ext’  показывается полный код знака, даже если он занимает больше одного байта. Вот пример для знака A с акцентом грав из Latin-1, в буфере с системой кодирования iso-2022-7bit1 :

Char:  `A  (04300,  2240,  0x8c0,  ext  ESC, A  @)  (latin-iso8859-1  64)

4.10  Числовые аргументы

В математике и компьютерной практике слово аргумент означает “данные, предоставляемые  функции или операции.”   Вы можете  передать любой команде  Emacs числовой аргумент (также называемый префиксным аргументом). Некоторые команды интерпретируют аргумент как счетчик повторений. Например, команда C-f  с аргументом, равным десяти, передвигает  вперед на десять знаков, а не на один. В этих командах отсутствие аргумента эквивалентно аргументу, равному единице.   Отрицательные аргументы говорят большинству таких команд, что надо двигаться или действовать в противоположном направлении.

Если на вашей клавиатуре есть клавиша hMETAi, простейший способ установить число-

вой аргумент — набрать цифры и/или знак минуса, прижав клавишу META.  Например,

M-5 C-n

передвинула бы на пять строк вниз.  Знаки Meta-1, Meta-2, и так далее, а также  Metaделают это, так как это ключи, привязанные к командам (digit-argument  и negativeargument), которые определены как передающие аргумент в следующую команду. Цифры и с модификатором Control или Control и Meta также задают числовой аргумент.

Другой способ задать аргумент — это использовать команду C-u (universal-argument), за которой следуют цифры аргумента. С помощью C-u вы можете набрать цифры аргумента, не удерживая клавиши-модификаторы; C-u работает на всех терминалах. Чтобы набрать отрицательный аргумент, введите после C-u знак минус. Просто знак минуса без цифр обычно обозначает ?1.

C-u, за которой следует знак, не являющийся  ни цифрой, ни знаком минус, имеет специальный смысл, “умножение на четыре”. Она умножает аргумент последующей команды на четыре. Две последовательные C-u умножают его на шестнадцать. Таким образом, C-u C-u C-f  передвигает  вперед на шестнадцать знаков.  Это удобный способ передвигаться вперед “быстро”, так как он передвигает вперед примерно на 1/5 всех строк, умещающихся на экране обычного размера. Другие полезные сочетания — это C-u C-n, C-u C-u C-n (двигает вниз на большой кусок экрана), C-u C-u C-o (создает “много” пустых строк) и C-u C-k (уничтожает четыре строки).

Некоторым командам важно только присутствие или отсутствие аргумента, но не его значение. Например, команда M-q (fill-paragraph) без аргумента заполняет текст, а с аргументом вдобавок выравнивает текст по правой границе.  (См.  Раздел 21.5 [Заполнение], с. 185, для более подробной  информации  о M-q).  Просто C-u дает удобный способ предоставления аргументов для таких команд.

Некоторые команды используют аргумент в качестве счетчика повторений, но их действия с аргументом и без него имеют некоторые специфические черты. Например, команда C-k (kill-line) с аргументом n уничтожает n строк, включая ограничивающие их знаки

1  На терминалах, которые поддерживают Latin-1,  знак после ‘Char:’ отображается как настоящий глиф для A с акцентом грав.

новой строки. Но C-k без аргумента действует по-другому: она уничтожает текст вплоть до перевода строки, или, если точка стоит как раз в конце  строки, уничтожает перевод строки.   Таким  образом, две команды C-k без аргумента могут  уничтожить  непустую строку, аналогичные результаты можно получить, набрав команду C-k с аргументом, равным единице.  (См.  Раздел 9.1 [Уничтожение], с. 69, для более подробной  информации  о C-k.)

Несколько команд трактуют  простую C-u не так, как обыкновенный аргумент. Некоторые другие команды могут различать аргумент в виде просто знака минус и аргумент ?1. Эти необычные случаи будут описаны, когда придет черед этих команд; они возникают всегда по причинам удобства использования отдельных команд.

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

ка.  Это работает прямо, если только знак — не цифра; например, C-u 6 4 a вставляет

64 копии знака ‘a’.  Но это не работает  для вставки цифр; C-u 6 4 1 задает аргумент 641, а не вставляет что-либо. Чтобы отделить цифру от аргумента, наберите  еще один C-u; например, C-u 6 4 C-u 1 на самом деле вставляет  64 копии знака ‘1’.

Мы используем термин “префиксный аргумент”, как и “числовой аргумент”, чтобы подчеркнуть, что вы набираете эти аргументы перед командой, и чтобы отличить эти аргументы от аргументов минибуфера, которые пишутся после команды.

4.11  Повторение команды

Команда C-x z  (repeat) предоставляет еще  один способ повторить команду Emacs несколько раз.  Эта команда повторяет предыдущую команду Emacs, какая бы она ни была. При повторении команда использует те же аргументы, какие у нее были раньше; она не считывает новые аргументы каждый раз.

Чтобы повторить команду несколько раз, напечатайте  еще  знаки z:  каждый знак z повторит эту команду еще один раз. Повторение заканчивается, когда вы вводите знак, отличный от z, или нажимаете кнопку мыши.

Предположим например, что вы напечатали C-u 2 0 C-d, чтобы удалить 20 знаков. Вы можете повторить эту команду (вместе с ее аргументом) еще три раза, чтобы удалить в общей сложности 80 знаков, напечатав C-x z z z.  Первый C-x z повторяет эту команду один раз, а каждый последующий z повторяет еще раз.

5 Минибуфер

Минибуфер используется командами Emacs для чтения более  сложных, чем простое число, аргументов. Аргументами минибуфера могут быть имена файлов, имена буферов, имена функций Лиспа, имена команд Emacs и много других вещей в зависимости от считывающих аргумент команд. Для редактирования аргументов в минибуфере могут быть использованы обычные команды редактирования Emacs.

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

Иногда в круглых скобках после двоеточия  появляется аргумент по умолчанию; он тоже является частью подсказки. Значение по умолчанию будет использовано как значение аргумента, если вы вводите пустой аргумент (например, просто наберете hRETi). К примеру, команды, считывающие  имена буферов, всегда показывают значение, принимаемое по умолчанию; оно является именем буфера, который будет использован в дальнейшем, если вы просто наберете hRETi.

Простейший способ дать аргумент минибуферу — набрать желаемый текст и завершить  его hRETi,  клавишей для выхода из минибуфера. Вы можете  отменить команду, которая запрашивает аргумент, и выйти из минибуфера, набрав C-g.

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

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

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

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