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

Обычная отмена относится ко всем изменениям,  сделанным в текущем буфере. Вы также можете произвести выборочную отмену, ограниченную текущей областью. Чтобы сделать это, задайте желаемую область, а затем запустите  команду undo с префиксным аргументом (значение  не играет роли): C-u C-x u или C-u C-_.  Это отменяет самое последнее изменение в области. Чтобы отменить более ранние изменения, повторите команду undo (префиксный аргумент не требуется). В режиме Transient Mark, любое использование undo, когда есть активная область, производит выборочную отмену; вам не нужно задавать префиксный аргумент.

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

Если вы не помните, намеренно ли вы изменили  буфер, наберите C-_ один раз. Когда вы увидите  последнее изменение,  которое вы сделали отмененным,  вы поймете, было ли это изменение умышленным. Если это была случайность, оставьте его отмененным. Если оно было умышленным,  восстановите изменение, как описано выше.

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

Вы не можете отменить простое перемещение курсора; только изменения содержимого буфера сохраняют информацию для отмены. Однако, некоторые команды движения курсора устанавливают метку, так что если вы время от времени используете эти команды, вы можете  вернуться в окрестности, по которым вы передвигались,  с помощью списка пометок (см. Раздел 8.5 [Список пометок], с. 66).

Когда информация отмены для какого-то буфера становится слишком большой, Emacs время от времени (во время сборки мусора) сбрасывает самые старые сведения. Вы можете указать, сколько информации для отмены необходимо хранить, с помощью двух переменных: undo-limit и undo-strong-limit. Их значения выражаются в байтах.

Переменная undo-limit устанавливает гибкий предел: Emacs хранит данные для отмены достаточного числа команд, чтобы оставаться в этих границах и, возможно, выйти за них, но не хранит данные для более ранних команд сверх этого предела. Ее значение по умолчанию  равно 20000. Переменная undo-strong-limit устанавливает более жесткий предел: команда, которая увеличивает размер за эту границу, забывается сама. Значение этой переменной равно по умолчанию 30000.

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

Причина того, что для команды undo определены два запускающих ключа, C-x u и C-_, состоит в том, что эта команда стоит того, чтобы иметь однознаковый ключ, но на некоторых клавиатурах нет очевидного  способа ввести C-_. C-x u предоставляет альтернативу, вы можете прямо набрать его на любом терминале.

4.5  Файлы

Описанных выше команд достаточно для создания и изменения текста в буфере Emacs; более продвинутые команды Emacs лишь позволяют делать это проще. Но для того чтобы сохранить любой текст,  вы должны поместить его в файл. Файлы — это именованные единицы текста, которые хранятся операционной системой, чтобы вы могли получить их позже по имени. Чтобы просмотреть или использовать  содержимое файла с любой целью, включая редактирование с помощью Emacs, вы должны задать его имя.

Рассмотрим  файл с именем ‘/usr/rms/foo.c’. Для того чтобы начать редактирование этого файла в Emacs, наберите

C-x C-f  /usr/rms/foo.c hRETi

Здесь имя файла дается как  аргумент для команды C-x C-f  (find-file).   Эта команда использует для считывания аргумента минибуфер, а чтобы завершить аргумент, вы набираете hRET(см. Глава 5 [Минибуфер], с. 45).

Emacs подчиняется этой команде, обращаясь к указанному файлу: создавая буфер, копируя в него содержимое этого файла и затем показывая вам буфер для редактирования. Если вы изменили этот буфер, вы можете сохранить новый текст в файле, напечатав  C-x C-s (save-buffer).  Это делает изменения постоянными путем копирования измененного содержимого  буфера снова в файл ‘/usr/rms/foo.c’. До этого ваши изменения существуют только внутри Emacs, а файл ‘foo.c’ не изменяется.

Чтобы создать файл, надо просто обратиться к нему с помощью C-x C-f, как если бы он уже существовал.  Emacs создаст пустой буфер, куда вы можете вставить текст, который хотите  занести в файл.  Реальный файл создается,  когда вы сохраняете  этот  буфер  с помощью C-x C-s.

Конечно, об использовании  файлов можно узнать гораздо больше.  См. Глава 14 [Фай-

лы], с. 105.

4.6  Справка

Если вы забыли, что делает какая-то клавиша, вы можете  выяснить это с помощью знака справки C-h (или hF1i, аналога C-h). Наберите C-h k, а затем имя ключа, о котором вы хотите узнать; например, C-h k C-n рассказывает  все о том, что делает C-n. C-h — это префиксная клавиша; C-h k — просто одна из ее подкоманд  (а именно, команда describekey). Другие подкоманды C-h предоставляют другие виды справки. Наберите C-h дважды, чтобы получить описание всех возможностей  справки. См. Глава 7 [Справка], с. 55.

4.7  Пустые строки

Здесь рассматриваются  специальные команды и приемы создания и удаления пустых строк.

C-o            Вставить после курсора одну или несколько пустых строк (open-line).

C-x C-o      Уничтожить  все последовательные  пустые строки, кроме одной (delete-blanklines).

Когда вы хотите вставить новую строку текста перед уже существующей, вы можете сделать это, набрав новую строку текста и за ней hRETi.  Однако, может оказаться удобнее видеть то,  что вы набираете,  если перед этим сперва создать пустую  строку,  а затем вставить в нее нужный текст.  Это легко сделать, используя клавишу C-o (open-line), которая вставляет новую строку после точки, но оставляет точку перед этой новой строкой. После С-о набирайте текст в новую строку.  С-о F O O дает тот же результат, что и F O O hRETi, за исключением конечной позиции точки.

Вы можете  создать несколько пустых строк, набрав С-о  несколько раз, или задав ей числовой аргумент, чтобы сказать ей, какое количество строк необходимо создать. См. Раздел 4.10 [Аргументы],  с. 42, чтобы узать, как это сделать. Если определен  префикс заполнения, то команда C-o, когда вы используете  ее в начале строки, вставляет на новой строке этот префикс заполнения. См. Раздел 21.5.3 [Префикс заполнения], с. 187.

Простой способ избавиться от лишних пустых строк — воспользоваться командой C-x C-o (delete-blank-lines). Использование C-x C-o среди нескольких пустых строк удаляет их все, кроме одной. C-x C-o на одиночной пустой строке удаляет эту строку. Когда точка находится на непустой строке,  C-x C-o удаляет все пустые строки после этой непустой строки.

4.8  Строки продолжения

Если вы добавляете слишком много знаков в одну строку, не прерывая   ее нажатием hRETi,  то эта строка будет расти и займет две (или более)  строки на экране; в крайней правой позиции каждой из занятых строк, кроме  последней,  будет расположен знак ‘\’. Знак ‘\’ говорит,  что следующая строка экрана не является отдельной  строкой в тексте, что это только продолжение строки, слишком длинной для данного экрана. Продолжение также называется переносом строк.

Иногда удобно, чтобы Emacs автоматически вставлял знаки перевода  строки,  когда строка становится слишком длинной; используйте  для этого режим Auto  Fill  (см.  Раздел 21.5 [Заполнение],  с. 185).

Вместо продолжения  Emacs может отображать длинные строки усеченными. Это значит, что все знаки, которые не вошли в ширину экрана или окна, не отображаются  совсем. Они остаются в буфере, но временно невидимы. В последнем столбце ставится знак ‘$’, а не ‘\’, чтобы информировать о действии усечения.

Усечение вместо продолжения происходит, когда используется горизонтальная прокрутка, и, возможно, во всех окнах, не занимающих полную ширину фрейма (см.  Глава 16 [Окна], с. 141). Вы можете включить усечение для конкретного буфера, установив в нем переменную truncate-lines не равной nil.  (См.  Раздел 31.2 [Переменные], с. 343.) Изменение значения  truncate-lines делает его локальным для текущего буфера;  до этого момента действует значение по умолчанию.  Начальное  значение по умолчанию — nil. См. Раздел 31.2.4 [Локальные переменные], с. 350.

См. Раздел 11.7 [Переменные изображения],  с. 84, о других переменных, влияющих на способ отображения  текста.

4.9  Информация о позиции курсора

Это команды для получения информации  о размере  и позиции частей буфера  и для подсчета числа строк.

M-x what-page

Напечатать номер страницы, на которой находится точка, и номер строки в пределах этой страницы.

M-x what-line

Напечатать номер строки, в которой находится точка в буфере.

M-x line-number-mode

Переключить режим автоматического отображения номера текущей строки.

M-=            Напечатать количество строк в текущей области (count-lines-region).  См.

Глава 8 [Пометка], с. 63, чтобы узнать, что такое область.

C-x =         Напечатать код знака после точки, знаковое положение точки и столбец точки

(what-cursor-position).

Есть две команды для работы с номерами строк.  M-x what-line подсчитывает номер текущей строки и показывает его в эхо-области. Чтобы перейти к строке с заданным номером, используйте M-x goto-line; она спросит у вас номер. Номера строк отсчитываются от единицы с начала буфера.

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

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

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

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