|
Уничтожение и перемещение текстаУничтожение означает стирание текста и запись его в список уничтожений, из которого он может быть получен с помощью восстановления. Некоторые системы, ставшие недавно популярными, используют для обозначения этих операций термины "вырезка" и "вставка". Самый распространенный способ переноса или копирования текста в Emacs --- сначала уничтожить его, а потом восстановить в одном или нескольких местах. Это очень надежно, так как все уничтоженные за последнее время куски текста запоминаются. И это удобно, так как многочисленные команды для уничтожения синтаксических единиц могут быть также использованы и для их перемещения. Но есть и другие способы копирования текста для особых целей. Emacs хранит единый для всех буферов список уничтожений, так что вы можете уничтожить текст в одном буфере и восстановить его в другом. Удаление и уничтожениеБольшинство команд, которые стирают текст из буфера, сохраняют его в списке уничтожений, чтобы вы
могли перенести или скопировать его в другие части буфера. Эти команды известны
как команды уничтожения. Остальные команды, стирающие текст, не
записывают его в список уничтожений; они известны как команды удаления.
(Такое отличие делается только для стирания текста в буфере). Если вы уничтожили
или удалили текст по ошибке, вы можете использовать команду C-x u
( Команды удаления включают C-d ( Удаление
Самые основные команды удаления -- это C-d
( Другие команды удаления -- это те, что удаляют только пробельные
знаки: пробелы, табуляцию и ограничители новых строк. M-\
( C-x C-o ( M-^ ( Уничтожение строк
Простейшей командой уничтожения является C-k. Если она даётся в начале строки, то уничтожает весь текст на строке, оставляя её пустой. Если команда дана на пустой строке, то уничтожает всю строку, включая ее ограничитель. Чтобы уничтожить непустую строку целиком, перейдите в её начало и нажмите C-k дважды. В более общем виде, C-k уничтожает все от точки вплоть до конца строки, если это не происходит в конце строки. В этом случае она уничтожает ограничитель новой строки, следующий за строкой, таким образом происходит слияние следующей строки с текущей. При решении вопроса о том, какой случай применять, невидимые пробелы и табуляция в конце строки игнорируются, так, если точка выглядит стоящей в конце строки, вы можете быть уверены, что C-k уничтожит перевод строки. Если C-k будет присвоен положительный аргумент, она уничтожит ровно столько строк вместе со следующими за ними ограничителями (однако, текст на текущей строке перед точкой сохраняется). С отрицательным аргументом -n она уничтожает n строк, предшествующих текущей (вместе с текстом на текущей строке перед точкой). Таким образом, C-u - 2 C-k в начале строки уничтожает две предыдущие строки. C-k с аргументом, равным нулю, уничтожает текст перед точкой на текущей строке. Если переменная Другие команды уничтожения
C-w ( Удобный способ уничтожения -- это
уничтожение скомбинированное с поиском: M-z
( Могут уничтожаться другие синтаксические единицы: слова, с помощью M-DEL и M-d (смотрите раздел Слова); s-выражения, с помощью C-M-k (смотрите раздел Списки и s-выражения); и предложения, с помощью C-x DEL и M-k (смотрите раздел Предложения). Вы можете использовать команды уничтожения в буферах, доступных только для чтения. На самом деле они не изменяют буфер и подают звуковой сигнал, чтобы предупредить вас об этом, но они действительно копируют текст, который вы попытались уничтожить, в список уничтожений, так что вы можете восстановить его в других буферах. Большинство команд уничтожения передвигают точку по тексту, который они копируют таким способом, поэтому последовательные команды уничтожения, как обычно, создают единое вхождение в списке уничтожений. ВосстановлениеВосстановление возвращает обратно текст, который был ранее уничтожен. Это то же самое, что в других системах называется "вставкой". Обычный способ копирования или перемещения текста --- уничтожить его, а затем восстановить один или несколько раз.
Список уничтоженийВесь уничтоженный текст записывается в кольцевой список уничтожений, список блоков текста, который был уничтожен. Существует только один список уничтожений, используемый во всех буферах, таким образом вы можете уничтожить текст в одном буфере и восстановить его в другом. Это обычный способ перемещения текста из одного файла в другой. (Смотрите раздел Накопление текста, для получения информации о других способах). Команда C-y
( C-u C-y оставляет курсор перед текстом и устанавливает метку после него. Это происходит, только если аргумент задан с помощью просто C-u. Любой другой вид аргумента, включая C-u и цифры, обозначают восстановление уничтоженного ранее (смотрите раздел Восстановление ранее уничтоженного). Если вы хотите скопировать блок текста,
вы можете использовать M-w ( Добавление уничтоженийОбычно каждая команда уничтожения добавляет новый блок в список уничтожений. Однако, две или более команды уничтожения подряд объединяют текст в единый элемент, так что одиночная C-y возьмет весь его обратно таким, каким он был перед уничтожением. Таким образом, если вы хотите восстановить текст как одно целое, вы не должны уничтожать весь этот текст одной командой; вы можете продолжать уничтожение строки за строкой или слова за словом до тех пор, пока не уничтожите весь текст полностью, и вы можете получить его обратно сразу целиком. Команды, которые уничтожают текст вперёд от точки, добавляют уничтоженное в конец предыдущего уничтоженного текста. Команды, которые уничтожают назад от точки, добавляют это в начало. Таким образом, любая последовательность смешанных команд уничтожения перед точкой и после нее объединяет весь уничтоженный текст в один элемент без переупорядочения. Числовой аргумент не прерывает последовательность добавления уничтожений. Например, предположим, что буфер содержит такой текст: Это пример строки -!-с образцом текста. с точкой, показанной как -!-. Если вы наберете M-d M-DEL M-d M-DEL, уничтожая по очереди вперёд и назад, то в конце получите `пример строки с образцом' в качестве одного вхождения в списке уничтожений и `Это текста.' в буфере. (Обратите внимание на двойной пробел, который вы можете очистить с помощью M-SPC или M-q.) Другой способ уничтожить тот же текст -- переместиться назад на два слова с помощью M-b M-b и уничтожить все четыре слова вперёд командой C-u M-d. Это даёт такой же результат в буфере и в списке уничтожений. M-f M-f C-u M-DEL уничтожает тот же текст, проходя все время назад; и опять результат будет тем же. Текст в элементе списка уничтожений всегда имеет тот же порядок, что он имел в буфере до того, как вы его уничтожили. Если команда уничтожения отделена от
предыдущей другими командами (не просто числовым аргументом), то она начинает
новый элемент в списке уничтожений. Но вы можете заставить эту команду
уничтожения добавлять текст к предыдущему элементу, набрав перед ней команду
C-M-w ( Команда уничтожения, следующая после M-w, не добавляет к тексту, который M-w скопировала в список уничтожений. Восстановление ранее уничтоженногоДля того чтобы
вернуть уничтоженный текст, который уже не является последним уничтоженным,
используйте команду M-y ( M-y можно понимать в терминах указателя на "последнее восстановление", который указывает на элемент в списке уничтожения. Каждый раз, когда вы уничтожаете, указатель на "последнее восстановление" передвигается в последний созданный элемент в начале списка. C-y восстанавливает элемент, на который ссылается указатель "последнего восстановления". M-y двигает указатель на "последнее восстановление" к другому элементу, и текст в буфере соответственно изменяется. Достаточное количество команд M-y может переместить указатель к любому элементу в списке, таким образом, вы можете получить любой элемент в буфере. Когда наконец указатель достигает последнего элемента списка, следующая команда M-y снова помещает его на первый элемент. M-y двигает указатель на "последнее восстановление" по списку, но это не меняет порядок элементов, которые всегда идут от самого последнего уничтожения до самого старого, которое ещё хранится. M-y может получить числовой аргумент, который говорит, на сколько элементов вперёд продвинуть указатель на "последнее восстановление". Отрицательный аргумент двигает этот указатель по направлению к началу списка; от начала списка он двигает к последнему элементу и продолжает движение вперёд оттуда. Как только искомый текст помещен в буфер, вы можете прекратить запускать команды M-y, и текст останется там. Это просто копия элемента списка уничтожения, поэтому редактирование его в буфере не изменяет содержимое этого списка. До тех пор, пока не делается новое уничтожение, указатель на "последнее восстановление" остается в том же самом месте в списке уничтожений, таким образом, повторение C-y восстановит ещё одну копию того же самого старого уничтожения. Если вы знаете, сколько команд M-y необходимо набрать, чтобы найти интересующий вас текст, вы можете восстановить этот текст за один шаг, используя C-y с числовым аргументом. C-y с аргументом восстанавливает текст, записанный в списке уничтожения на заданное число элементов назад. Таким образом, C-u 2 C-y достает следующий за последним блок уничтоженного текста. Это эквивалентно C-y M-y. C-y c числовым аргументом начинает подсчёт от указателя на "последнее восстановление" и устанавливает этот указатель на элемент, который эта команда восстанавливает. Длина списка уничтожений управляется переменной
Действительное содержимое списка уничтожений хранится в
переменной Накопление текстаОбычно мы копируем или переносим текст путем его уничтожения и восстановления, но существуют и другие способы, удобные для копирования одного блока текста во многие места или для копирования многих рассеянных блоков текста в одно место. Чтобы скопировать один блок во много мест, запишите его в регистр (смотрите раздел Регистры). Здесь мы описываем команды для накопления разбросанных кусков текста в буфер или в файл.
Для накопления текста в буфере используется M-x append-to-buffer.
Она считывает имя буфера, а затем вставляет в этот буфер копию области. Если
буфер с таким именем не существует, то Точка в этом буфере остается в конце копируемого текста, таким образом,
последовательное использование M-x prepend-to-buffer подобна Чтобы вернуть накопленный текст из другого буфера, используйте команду M-x insert-buffer; она также принимает имя буфера как аргумент. Эта команда вставляет копию текста из буфера с заданным именем в выбранный буфер. Или вы можете выбрать другой буфер для редактирования, возможно, перемещая впоследствии текст из него путем уничтожения. Смотрите раздел Использование множества буферов, для получения базовой информации о буферах. Вместо накопления текста внутри буфера Emacs вы можете добавить текст непосредственно в файл с помощью команды M-x append-to-file, которая использует имя файла в качестве аргумента. Она добавляет текст области в конец заданного файла. Файл на диске изменяется сразу. Вы должны использовать Прямоугольники@hyphenation{пря-мо-уголь-ни-ка пря-мо-уголь-ник пря-мо-уголь-ни-ки пря-мо-уголь-ни-ков} Команды для прямоугольников работают с прямоугольными областями текста: всеми знаками между определённой парой столбцов в определённом диапазоне строк. Эти команды предназначены для уничтожения прямоугольников, восстановления уничтоженных прямоугольников, их очистки, заполнения пробелами или текстом, или удаления. Команды для прямоугольников полезны для работы с текстом в многоколоночных форматах и для приведения текста к такому формату или извлечения из него. Когда вам нужно задать прямоугольник для команды, которая будет с ним работать, вы делаете это, устанавливая метку в одном углу и точку в противоположном. Прямоугольник, описанный таким образом, называется областью-прямоугольником, так как вы управляете им почти так же, как и областью. Но помните, что данная комбинация значений точки и метки может быть интерпретирована и как область, и как прямоугольник в зависимости от команды, которая их использует. Если точка и метка находятся на одном столбце, то прямоугольник, который они ограничивают, пуст. Если они находятся на одной строке, то прямоугольник имеет высоту в одну строку. Эта несимметричность между строками и столбцами происходит из того, что точка (и метка) располагается между двух столбцов, но внутри строки.
Операции, работающие с прямоугольниками, делятся на два класса: команды удаления и вставки прямоугольников и команды для пустых прямоугольников. Существует два способа избавиться от текста в прямоугольнике: вы
можете сбросить (удалить) его или записать его как "последний уничтоженный"
прямоугольник. Для этого используются две команды C-x r d
( Заметьте, что "уничтожение" прямоугольника не есть уничтожение в обычном понимании; этот прямоугольник хранится не в списке уничтожений, а в специальном месте, которое в состоянии записать только самое последнее уничтожение прямоугольника. Это происходит из-за того, что восстановление прямоугольника настолько отличается от восстановления линейного текста, что для этого должны использоваться другие команды восстановления, и в этом случае трудно приписать смысл команде, выдающей более ранние уничтожения. Чтобы вставить последний уничтоженный
прямоугольник, наберите C-x r y ( Вы можете превратить списки из одной колонки в списки из двух колонок, используя уничтожение и восстановление прямоугольников; уничтожьте вторую половину списка как прямоугольник и затем восстановите его рядом с первой строчкой списка. Смотрите раздел Редактирование текста в две колонки, другой способ редактировать двухколоночный текст. Прямоугольники также могут быть скопированы в регистры и из регистров с помощью C-x r r r и C-x r i r. Смотрите раздел Запись прямоугольников в регистры. Существуют две
команды для работы с пустыми прямоугольниками: M-x clear-rectangle,
чтобы расписать пробелами существующий текст, и C-x r o
( Команда M-x delete-whitespace-rectangle удаляет горизонтальное пустое пространство, начиная с определённого столбца. Это относится к каждой строке в прямоугольнике, а столбец задаётся левым краем прямоугольника. Правый край прямоугольника не имеет значения для этой команды. Команда C-x r t ( Назад | Вперед | Содержание |
|
Распространение материалов сайта означает, что распространитель принял условия лицензионного соглашения. Идея и реализация: © Владимир Довыденков и Анатолий Камынин, 2004-2024 |
Социальные сети