|
Основные команды редактированияЗдесь мы рассказываем основы о том, как
ввести текст, сделать изменения и записать текст в файл. Если эти сведения новы
для вас, вы можете изучить это более лёгким способом, запустив самоучитель по
Emacs. Чтобы сделать так, запустите Emacs и наберите Control-h t
( Чтобы очистить экран и перерисовать изображение, напечатайте C-l
( Вставка текстаЧтобы вставить печатные знаки в редактируемый вами текст, достаточно просто набрать их. Таким образом, вводимые вами знаки вставляются в буфер в позиции курсора (то есть в точке; смотрите раздел Точка). Курсор двигается вперёд, и весь текст после курсора тоже сдвигается вперёд. Если в буфере был текст `FOOBAR', и курсор стоял перед `B', то если вы наберёте XX, вы получите `FOOXXBAR' c курсором, оставшимся перед `B'. Чтобы удалить текст, который вы только что вставили, используйте DEL. DEL удаляет знак перед курсором (а не знак под курсором; этот знак стоит после курсора). Курсор и все знаки, стоящие после него, сдвигаются назад. Поэтому, если вы набрали печатные знаки и затем набираете DEL, набранное отменяется. Чтобы закончить строку и начать набирать новую, нажмите RET. Это вставит в буфер знак перехода на новую строку. Если точка находится в середине строки, RET разбивает эту строку. Набор DEL, когда курсор находится в начале строки, удаляет предшествующий символ новой строки, соединяя таким образом эту и предшествующую строки. Emacs может разбивать строки автоматически, когда они становятся слишком длинными, если вы включите специальный второстепенный режим, называемый режимом Auto Fill. Смотрите раздел Заполнение текста, для информации об использовании режима Auto Fill. Если вы предпочитаете, чтобы знаки текста замещали (перезаписывали) существующий текст, а не сдвигали его вправо, вы можете включить второстепенный режим Overwrite. Смотрите раздел Второстепенные режимы. Непосредственная вставка работает для печатных знаков и
SPC, но другие знаки действуют как команды редактирования и не
вставляют сами себя. Если вам требуется вставить управляющий знак или знак, код
которого превышает восьмиричное 200, вы должны отменить их особый
смысл, набрав перед ними Control-q (
Когда включена поддержка многобайтных знаков, восьмиричные коды от 0200 до 0377 не являются верными знаками; если вы задаёте код из этого промежутка, C-q считает, что вы собираетесь использовать какой-то из наборов знаков ISO Latin-n, и преобразует заданный код к соответствующему коду знаков Emacs. Смотрите раздел Включение поддержки многобайтных знаков. Какой именно набор знаков ISO Latin следует использовать, определяется выбранной вами языковой средой (смотрите раздел Языковые среды). Чтобы использовать вместо восьмиричных цифр десятичные или
шестнадцатиричные, установите переменную Числовой аргумент для C-q указывает, сколько копий знаков с отмененным особым смыслом необходимо вставить (смотрите раздел Числовые аргументы). Информация для настройки: DEL
в большинстве режимов запускает команду Изменение положения точкиЧтобы сделать что-то большее, чем просто вставка знаков, вы должны знать, как двигается точка (смотрите раздел Точка). Простейший способ переместить точку -- воспользоваться курсорными стрелками или щёлкнуть левой кнопкой мыши в том месте, куда вы хотите передвинуть точку. Есть также Control- и Meta-знаки для перемещения курсора. Некоторые из них эквивалентны курсорным стрелкам (они были придуманы в те дни, когда у терминалов еще не было курсорных стрелок, их можно использовать на таких терминалах). Другие делают более сложные вещи.
Если вы установите переменную Обычно C-n, вызванная на последней строке
буфера, добавляет к буферу новую строку. Если переменная
Стирание текста
Вы уже знаете о клавише DEL, которая удаляет знак перед точкой (то есть перед курсором). Другой ключ , Control-d (C-d для краткости), удаляет знак после точки (тот знак, на котором курсор). Это сдвигает остальной текст на строке влево. Если вы нажмете C-d в конце строки, то эта строка и следующая за ней соединяются. Чтобы стереть больший кусок текста, используйте ключ C-k, который удаляет целую строку. Если вы нажмете C-k в начале или в середине строки, то он уничтожает весь текст вплоть до конца этой строки. Если вы наберете C-k в конце строки, то он объединяет эту строку со следующей. Смотрите раздел Удаление и уничтожение, для получения информации о более гибких способах уничтожения текста. Отмена сделанных измененийВы можете удалить все недавние изменения в тексте буфера вплоть до
определенного предела. Каждый буфер записывает изменения отдельно, и команда
отмены всегда относится к текущему буферу. Обычно каждая команда редактирования
создает отдельное вхождение в записи отмены, но некоторые команды, как например
Вы делаете отмену с помощью команды C-x u или C-_. Когда вы впервые даёте эту команду, она отменяет последнее сделанное изменение. Точка возвращается к тому месту, где она была до команды, сделавшей изменение. Последовательное повторение C-_ или C-x u отменяет все более ранние изменения, вплоть до предела доступной информации отмены. Если все записанные изменения уже были отменены, команда отмены печатает сообщение об ошибке и ничего не делает. Любая команда, отличная от команды отмены, прерывает последовательность команд отмены. Начиная с этого момента предыдущие команды отмены рассматриваются как простые изменения, которые могут быть отменены. Таким образом, чтобы вернуть отмененные вами изменения, наберите C-f или любую другую команду, которая не причиняя вреда прервет последовательность отмен, а затем снова набирайте команды отмены. Обычная отмена относится ко всем
изменениям, сделанным в текущем буфере. Вы также можете произвести
выборочную отмену, ограниченную текущей областью. Чтобы сделать это,
задайте желаемую область, а затем запустите команду Если вы заметили, что буфер был изменен случайно, простейший путь вернуться в первоначальное состояние -- это набирать C-_ несколько раз, пока не исчезнут звездочки, стоящие в начале строки режима. В этот момент все сделанные вами изменения отменены. Всякий раз, когда команды отмены убирают звездочки из строки режима, это означает, что содержимое буфера стало точно таким же, каким оно было, когда файл был последний раз считан или сохранен. Если вы не помните, намеренно ли вы изменили буфер, наберите C-_ один раз. Когда вы увидите последнее изменение, которое вы сделали отмененным, вы поймете, было ли это изменение умышленным. Если это была случайность, оставьте его отмененным. Если оно было умышленным, восстановите изменение, как описано выше. Не все буферы записывают информацию для отмены. Буферы, чьи имена начинаются с пробела, этого не делают. Они используются для внутренних нужд Emacs и его расширений для хранения текста, который обычно не редактируется и не просматривается пользователями. Вы не можете отменить простое перемещение курсора; только изменения содержимого буфера сохраняют информацию для отмены. Однако, некоторые команды движения курсора устанавливают метку, так что если вы время от времени используете эти команды, вы можете вернуться в окрестности, по которым вы передвигались, с помощью списка пометок (смотрите раздел Список пометок). Когда информация отмены для какого-то буфера становится слишком
большой, Emacs время от времени (во время сборки мусора) сбрасывает самые старые
сведения. Вы можете указать, сколько информации для отмены необходимо хранить, с
помощью двух переменных: Переменная Вне зависимости от значений этих переменных, самое последнее изменение никогда не сбрасывается, поэтому нет опасности, что сборка мусора, случившаяся сразу после неумышленного большого изменения, помешает вам отменить его. Причина того, что для команды ФайлыОписанных выше команд достаточно для создания и изменения текста в буфере Emacs; более продвинутые команды Emacs лишь позволяют делать это проще. Но для того чтобы сохранить любой текст, вы должны поместить его в файл. Файлы -- это именованные единицы текста, которые хранятся операционной системой, чтобы вы могли получить их позже по имени. Чтобы просмотреть или использовать содержимое файла с любой целью, включая редактирование с помощью Emacs, вы должны задать его имя. Рассмотрим файл с именем C-x C-f /usr/rms/foo.c RET Здесь имя файла даётся как аргумент для команды C-x C-f
( Emacs подчиняется этой команде, обращаясь к указанному файлу:
создавая буфер, копируя в него содержимое этого файла и затем показывая вам
буфер для редактирования. Если вы изменили этот буфер, вы можете
сохранить новый текст в файле, напечатав C-x C-s
( Чтобы создать файл, надо просто обратиться к нему с помощью C-x C-f, как если бы он уже существовал. Emacs создаст пустой буфер, куда вы можете вставить текст, который хотите занести в файл. Реальный файл создаётся, когда вы сохраняете этот буфер с помощью C-x C-s. Конечно, об использовании файлов можно узнать гораздо больше. Смотрите раздел Работа с файлами. СправкаЕсли вы забыли, что делает какая-то клавиша, вы можете
выяснить это с помощью знака справки C-h (или F1, аналога
C-h). Наберите C-h k, а затем имя ключа, о котором вы
хотите узнать; например, C-h k C-n рассказывает все о том, что делает
C-n. C-h -- это префиксная клавиша; C-h k --
просто одна из её подкоманд (а именно, команда Пустые строкиЗдесь рассматриваются специальные команды и приемы создания и удаления пустых строк.
Когда вы хотите вставить новую строку текста
перед уже существующей, вы можете сделать это, набрав новую строку текста и за
ней RET. Однако, может оказаться удобнее видеть то, что вы набираете,
если перед этим сперва создать пустую строку, а затем вставить в нее нужный
текст. Это легко сделать, используя клавишу C-o
( Вы можете создать несколько пустых строк, набрав С-о несколько раз, или задав ей числовой аргумент, чтобы сказать ей, какое количество строк необходимо создать. Смотрите раздел Числовые аргументы, чтобы узать, как это сделать. Если определен префикс заполнения, то команда C-o, когда вы используете её в начале строки, вставляет на новой строке этот префикс заполнения. Смотрите раздел Префикс заполнения. Простой способ избавиться от лишних пустых строк -- воспользоваться командой
C-x C-o ( Строки продолженияЕсли вы добавляете слишком много знаков в одну строку, не прерывая её нажатием RET, то эта строка будет расти и займёт две (или более) строки на экране; в крайней правой позиции каждой из занятых строк, кроме последней, будет расположен знак `\'. Знак `\' говорит, что следующая строка экрана не является отдельной строкой в тексте, что это только продолжение строки, слишком длинной для данного экрана. Продолжение также называется переносом строк. Иногда удобно, чтобы Emacs автоматически вставлял знаки перевода строки, когда строка становится слишком длинной; используйте для этого режим Auto Fill (смотрите раздел Заполнение текста). Вместо продолжения Emacs может отображать длинные строки усеченными. Это значит, что все знаки, которые не вошли в ширину экрана или окна, не отображаются совсем. Они остаются в буфере, но временно невидимы. В последнем столбце ставится знак `$', а не `\', чтобы информировать о действии усечения. Усечение вместо продолжения происходит, когда используется горизонтальная
прокрутка, и, возможно, во всех окнах, не занимающих полную ширину фрейма
(смотрите раздел Множество
окон). Вы можете включить усечение для конкретного буфера, установив в нём переменную Смотрите раздел Переменные управления изображением, о других переменных, влияющих на способ отображения текста. Информация о позиции курсораЭто команды для получения информации о размере и позиции частей буфера и для подсчёта числа строк.
Есть две команды для работы с номерами строк. M-x what-line подсчитывает номер текущей строки и показывает его в эхо-области. Чтобы перейти к строке с заданным номером, используйте M-x goto-line; она спросит у вас номер. Номера строк отсчитываются от единицы с начала буфера. Вы также можете видеть номер текущей строки в строке режима; Смотрите раздел Строка режима. Если вы сузили буфер, то номер строки в строке режима отсчитывается относительно доступной части (смотрите раздел Сужение). В противоположность этому, По этому поводу мы могли бы упомянуть
М-= ( Команда С-х =
( Char: c (0143, 99, 0x63) point=24781 of 31832(78%) column 52 (На самом деле, это результат, полученный, когда точка была перед словом `column' в самом примере.) Четыре величины после `Char:' описывают знак, следующий за точкой; первое показывает его, а остальные дают его восьмиричный, десятичный и шестнадцатиричный код. Для многобайтного не-ASCII-знака после этих чисел следует `ext' и шестнадцатиричное представление в системе кодирования данного буфера, если эта система кодирования безопасно может представить этот знак в одном байте (смотрите раздел Системы кодирования). Если код знака больше одного байта, Emacs показывает `ext ...'. После `point=' следует позиция точки, выраженная через количество знаков. Началу буфера присваивается позиция 1, следующему знаку 2 и так далее. Следующее, большее число означает общее число знаков в буфере. Потом в круглых скобках находится позиция, выраженная как процент от общего размера. После `column' пишется горизонтальная позиция точки, в столбцах от левого края окна. Если буфер был сужен, и некоторое количество текста в начале и в конце временно недоступно, то С-х = печатает дополнительный текст, описывающий текущие границы доступа. Например, команда может показать такое: Char: C (0103, 67, 0x43) point=252 of 889(28%) <231 - 599> column 0 где два добавленных числа дают наименьшую и наибольшую допустимые для точки позиции знаков. Доступными являются знаки между двумя этими позициями. Смотрите раздел Сужение. Если точка находится в конце буфера (или в конце видимой части), в выводе С-х = не описывается знак, стоящий после точки. Вывод может выглядеть так: point=26957 of 26956(100%) column 0 C-u C-x = показывает вместо координат и столбца дополнительную
информацию о знаке: имя набора знаков и коды данного знака в этом наборе;
ASCII-знаки идентифицируются как принадлежащие набору знаков Char: `A (04300, 2240, 0x8c0, ext ESC , A @) (latin-iso8859-1 64) Числовые аргументыВ математике и компьютерной практике слово аргумент означает "данные, предоставляемые функции или операции." Вы можете передать любой команде Emacs числовой аргумент (также называемый префиксным аргументом). Некоторые команды интерпретируют аргумент как счётчик повторений. Например, команда C-f с аргументом, равным десяти, передвигает вперёд на десять знаков, а не на один. В этих командах отсутствие аргумента эквивалентно аргументу, равному единице. Отрицательные аргументы говорят большинству таких команд, что надо двигаться или действовать в противоположном направлении. Если на вашей клавиатуре есть клавиша META, простейший способ установить числовой аргумент -- набрать цифры и/или знак минуса, прижав клавишу META. Например, M-5 C-n передвинула бы на пять строк вниз. Знаки Meta-1,
Meta-2, и так далее, а также Meta-- делают это, так как
это ключи, привязанные к командам ( Другой способ задать аргумент -- это
использовать команду C-u ( 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 ( Некоторые команды используют аргумент в качестве счётчика повторений, но их
действия с аргументом и без него имеют некоторые специфические черты. Например,
команда 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'. Мы используем термин "префиксный аргумент", как и "числовой аргумент", чтобы подчеркнуть, что вы набираете эти аргументы перед командой, и чтобы отличить эти аргументы от аргументов минибуфера, которые пишутся после команды. Повторение командыКоманда C-x z
( Чтобы повторить команду несколько раз, напечатайте ещё знаки z: каждый знак z повторит эту команду ещё один раз. Повторение заканчивается, когда вы вводите знак, отличный от z, или нажимаете кнопку мыши. Предположим например, что вы напечатали C-u 2 0 C-d, чтобы удалить 20 знаков. Вы можете повторить эту команду (вместе с её аргументом) ещё три раза, чтобы удалить в общей сложности 80 знаков, напечатав C-x z z z. Первый C-x z повторяет эту команду один раз, а каждый последующий z повторяет ещё раз. Назад | Вперед | Содержание |
|
Распространение материалов сайта означает, что распространитель принял условия лицензионного соглашения. Идея и реализация: © Владимир Довыденков и Анатолий Камынин, 2004-2024 |
Социальные сети