Copyright (c) 1985, 1996 Free Software Foundation, Inc. See end for conditions. Вы читаете учебник Emacs. Для управления Emacs обычно используется клавиша CONTROL (иногда отмечаемая как CTRL или CTL) или клавиша META. На некоторых клавиатурах, клавиша META отмечена ALT или EDIT или как-нибудь еще (например, на клавиатурах Sun, "the diamond key" слева от пробела и есть META). Если у вас нет клавиши META, вы можете использовать ESC вместо нее. Далее вместо META или CONTROL каждый раз мы будем использовать префиксный символ в следующих сокращениях: C- следует удерживать клавишу CONTROL пока набирается символ Так, C-f должно означать: нажать клавишу CONTROL и f. M- следует удерживать клавишу META пока набирается символ . Если таковой нет, нажмите , отпустите ее, потом символ . Важное замечание: для завершения сеанса Emacs, наберите C-x C-c. (Два символа). Символы ">>" с левой стороны указывают, что вам нужно делать, чтоб применить команду. Например: >> Теперь нажмите C-v (Просмотр следующего экрана) для перемещения на следующий экран. (идите вперед, удерживая клавишу Control нажимая v). Теперь вы должны это сделать еще раз, когда закончите читать экран. Обратите внимание на то, что, пока вы движетесь с экрана на экран, перекрываются две строчки; это обеспечивает некоторую непрерывность, таким образом вы можете продолжать читать текст. Первое что вам необходимо знать - как передвигаться по тексту из одного места в другое. Вы уже знаете, как передвинуть вперед один экран, используя C-v. Для перемещения назад одного экрана, нажмите M-v (удерживайте клавишу META и наберите v, или нажмите v если у вас нет клавишу META, EDIT, или ALT). >> попробуйте набрать M-v и потом C-v, несколько раз. * КРАТКО --------- Следующие команды используются для просмотра: C-v Перейти на один экран вперед M-v Перейти на один экран назад C-l Очистить экран и отобразить все заново, разместив текст, находящийся возле курсора, в центре экрана. (Это control-L, не control-1.) >> Найдите курсор, и запомните текст возле него. Потом нажмите C-l. Найдите курсор снова и убедитесь, что возле него все тот же текст. * БАЗОВОЕ УПРАВЛЕНИЕ КУРСОРОМ ----------------------------- Движение от экрана к экрану удобно, но как переместиться в определенное место по тексту на экране? Есть насколько путей, чтобы сделать это. Основной путь - использовать команды C-p, C-b, C-f, и C-n. Каждая из этих команд передвигает курсор на одну строку или колонку на экране в определенном направлении. Эта таблица показывает четыре команды и четыре направления движения: Предыдущая строка, C-p : : Назад, C-b .... Текущая позиция курсора .... Вперед, C-f : : Следующая строка, C-n >> Переместите курсор на строку рядом с диаграммой, используя C-n или C-p. Потом, нажмите C-l и посмотрите как диаграмма разместится в центре экрана. Вам будет несложно запомнить по буквам (// нда, зная английский - совсем легко ) : P-предыдущий (previous), N-следующий (next), B-назад (backward) и F-вперед (forward). Это основные команды позиционирования курсора, которыми Вы будете пользоваться ВСЕГДА, так что будет неплохо их выучить. >> Нажмите несколько раз C-n чтоб опустить курсор вниз на эту строку. >> Переместитесь по строке, используя C-f и потом поднимитесь вверх с помощью C-p. Посмотрите, как изменилось положение курсора при нажатии С-р, если он находился в середине строки. Каждая строка текста завершается символом НоваяСтрока (Newline character), который отделяет ее от следующей строки. Последняя строка в вашем файле должна бы тоже завершаться символом НоваяСтрока (но Emacs не требует этого). >> Попробуйте использовать C-b в начале строки. Курсор должен переместиться на конец предыдущей строки. Это происходит потому, что он движется назад через символ НоваяСтрока. C-f может перемещать курсор через НовуюСтроку так же, как и C-b. >> Попробуйте несколько раз применить C-b, так чтобы Вы увидели, как движется курсор. Далее используйте C-f чтобы вернуться на конец строки. Нажмите C-f еще раз, чтобы перейти к началу следующей строки. Когда вы перемещаетесь за верхний или нижний край экрана, текст, находящийся за экраном, сдвигается внутрь экрана. Это называется "скроллинг". Скроллинг позволяет Emacs`у перемещать курсор в нужное место текста без перемещения его за пределы экрана. >> Попробуйте переместить курсор за нижнюю границу экрана, используя C-n, и посмотрите, что изменится. Если посимвольное перемещение слишком медленно, Вы можете двигаться по словам. M-f (Meta-f) перемещает вперед на слово, а M-b назад на слово. >> Нажмите несколько раз M-f и M-b. Если курсор нах. в середине слова, M-f переместит его в конец слова. Если курсор нах. между словами, M-f переместит его в конец следующего слова. M-b работает точно так же в противоположном направлении. >> Нажмите M-f и M-b несколько раз, перемежая с C-f и C-b - так вы сможете заметить действия M-f и M-b из разных позиций в словах и между ними. Отметьте параллель между C-f и C-b с одной стороны, и M-f и M-b с другой. Очень часто Meta-символы используются для соответствующих операций над единицами, определенными в языке (слова, предложения, абзацы), когда Control-символы оперируют основными единицами, независимо от того, что Вы редактируете (символы, строки, и т.д.). Эта параллель существует между строками и предложениями: C-a и C-e перемещает курсор в начало и конец строки, а M-a и M-e перемещает курсор в начало и конец предложения. >> Попробуйте нажать пару раз C-a, и потом пару раз C-e. Попробуйте пару раз нажать M-a, после этого пару раз нажать M-e. Посмотрите, что повтор C-a ничего не изменяет, а повтор M-a продолжает движение курсора к следующему предложению. Это не сохраняет аналогию, но выглядит естественно. Положение курсора в тексте также называют "точка". Скажем иначе: курсор показывает место на экране в какой точке будет расположен вводимый текст. Здесь собраны простые команды перемещения курсора, включая движение по словам и предложениям: C-f На символ вперед C-b На символ назад M-f На слово вперед M-b На слово назад C-n На следующую строку C-p На предыдущую строку C-a В начало строки C-e В конец строки M-a Назад, в начало предложения M-e Вперед, в конец предложения >> Попробуйте сейчас на практике применить несколько раз все эти команды. Это наиболее используемые команды. Две другие важные команды движения курсора M-< (Meta Less-then {Меньше-Чем}), которая перемещает курсор в начало текста, и M-> (Meta Greater-than {Больше-Чем}), которая перемещает курсор в конец текста. На большинстве терминалов символ "<" находится над точкой, и вы должны использовать клавишу Shift чтоб набрать его. На этих терминалах вы так же должны использовать Shift чтоб набрать M-<; Без удержания клавиши Shift вы наберете M-точка. >> Сейчас попробуйте M-<, чтоб переместиться в начало учебника. Потом используйте C-v чтоб вернуться назад. >> Сейчас попробуйте M->, что переместиться к концу учебника. Используйте M-v чтоб вернуться снова. Курсор можно перемещать стрелочками, если Ваш терминал имеет их. Мы рекомендуем выучить C-b, C-f, C-n и C-p по трем причинам. Первое, они работают на любых терминалах. Второе, однажды получив практику использования Emacs, вы поймете, что использовать CTRL-символы удобнее и быстрее, чем кнопки со стрелочками (потому что вы не убираете руки с обычного их положения при печати). Третье, как только вы привыкните использовать CTRL-символы, вы сможете так же легко выучить и использовать другие, более специальные команды перемещения курсора. Большинство команд Emacs`а допускают цифровой аргумент; для большинства команд, это служит счетчиком повторения. Чтоб задать счетчик повторения для команды, нажмите C-u, потом число повторений, укажите команду. Если у вас есть клавиша META (или EDIT или ALT), есть другой способ задать цифровой аргумент: наберите цифры, удерживая кнопку META. Мы рекомендуем освоить использование C-u, т.к эта последовательность клавиш работает на любом терминале. Например, C-u 8 C-f переместит курсор на восемь символов вперед. >> Попробуйте использовать C-n или C-p с цифровым аргументом, чтобы переместить курсор на строку рядом с этой командой. Многие команды используют числовой аргумент как счетчик повторений. Но есть исключения. Такие исключения - C-v и M-v . При получении числового аргумента, они скроллируют экран вверх или вниз на указанное число строк, вместо такого же числа экранов. Например, C-u 4 C-v прокрутит экран на 4 строки. >> Сейчас попробуйте комбинацию C-u 8 C-v. Эта команда должна прокрутить экран на 8 строк вверх. Если вы хотите прокрутить его вниз, можете задать аргумент для M-v. Если вы используете X Window, вероятно есть прямоугольник именуемый полоса прокрутки (scroll bar) с справой стороны окна Emacs. Вы можете скроллировать текст, манипулируя мышью. >> Попробуйте нажать среднюю кнопку мышки вверху подсвеченной области внутри полосы прокрутки. Текст должен прокрутиться до позиции, определенной тем, как высоко или низко вы нажмете. >> Перместите мышку в точку полосы прокрутки возле третей строки сверху и нажмите левую кнопку пару раз. * УПРАВЛЕНИЕ КУРСОРОМ НА X-ТЕРМИНАЛЕ ------------------------------------ Если у вас X-терминал, вам, вероятно, покажется более легким использовать клавиши на keypad`е для управления курсором. Стрелки влево, вправо, вверх и вниз передвигают курсор в ожидаемом направлении; они функционируют точно как C-b, C-f, C-p, и C-n, но легче в наборе и запоминании. Вы так же можете использовать C-left и C-right для передвижения по словам, и C-up и C-down для передвижения по блокам (т.е. параграфам, если вы редактируете текст). Если у вас есть кнопка помеченная HOME (или BEGIN) и END, то они будут перемещать курсор в начало и конец строки, соответственно, и C-home и C-end будут перемещать в начало и конец файла. Если на вашей клавиатуре есть кнопки PgUp и PgDn, вы можете их использовать для перемещения вверх и вниз поэкранно, как M-v и C-v. Все эти команды могут получать цифровой аргумент, как рассказано выше. Вы можете использовать shortcut для ввода этого аргумента: просто нажмите CONTROL или META и наберите число. Например, для перемещения на 12 слов вправо, наберите C-1 C-2 C-right. Запомните что так очень легко набирать, потому что вы не отпускаете кнопку CONTROL между нажатиями. * ЕСЛИ EMACS ЗАВИС ------------------ Если Emacs перестал реагировать на ваши команды, вы можете остановить это просто нажав C-g. Вы можете использовать C-g чтоб остановить команду которая слишком долго выполняется. Вы так же можете использовать C-g для отмены цифрового аргумента или начатой команды которую вы не хотите завершать. >> Наберите C-u 100 для задания аргумента 100, потом нажмите C-g. Теперь нажмите C-f. Курсор должен переместиться всего на один символ, потому что вы отменили аргумент нажатием C-g. Если вы нажали по ошибке, вы так же можете избавиться от этого нажатием C-g. * ВЫКЛЮЧЕННЫЕ КОМАНДЫ (DISABLED COMMANDS) ----------------------------------------- Некоторые команды Emacs "выключены" так как начинающие пользователи могут их использовать случайно. Если вы набрали одну из выключенных команд, Emacs покажет сообщение говорящее какая команда вызывается, и спросит, хотите ли вы продолжить и выполнить команду. Если вы действительно хотите попробовать команду, нажмите Пробел (Space) в ответ на этот вопрос. Обычно, если вы не хотите выполнять выключенную команду, отвечайте на вопрос "n". >> Нажмите `C-x n p' (выключенная команда), потом ответьте "n" на вопрос. * ОКНА ------ Emacs может иметь несколько окон, каждое отображает свой текст. Заметьте, "окно" используемое Emacs`ом это не отдельные перекрывающееся окна в оконной системы, это отдельные области в одном окне X window. (Emacs так же может иметь несколько окон X windows, или "кадров" ("frames") в терминологии Emacs. Это будет описано позже.) На этой стадии лучше не погружаться в технологию использования множества окон. Но вам нужно знать, как избавляться от лишних окон, которые могут появляться чтоб отобразить помощь, или вывод определенных команд. Это просто: C-x 1 Одно окно. (закрыть все другие окна). Это Control-x со следующей цифрой 1. C-x 1 развернет окно которое содержит курсор, так, чтоб оно заняло весь экран. Это удалит все другие окна. >> Переместите курсор на эту строку и нажмите C-u 0 C-l. (Запомните что C-l перерисовывает экран. Если вы задаете цифровой аргумент для этой команды, это значит "перерисовать экран и поместить текущую строку на столько-то строк от начала экрана." Так C-u 0 C-l означает "перерисовать экран, поместить текущую строку в начале.") >> Наберите Control-x 2 Посмотрите, как текущее окно сожмется, когда новое появится и отобразит содержимое этого буфера. >> Наберите C-x 1 и посмотрите как окно исчезнет. * ВСТАВКА И УДАЛЕНИЕ -------------------- Если вы хотите вставить текст, просто наберите текст. Символы, которые вы можете видеть, такие как A, 7, *, и пр. понимаются Emacs`ом как текст и вставляются немедленно. Нажмите (кнопка перевода каретки) для вставки символа НоваяСтрока. Вы можете удалить последний набранный символ нажимая . Клавиша на клавиатуре может быть обозначена как "Del". В некоторых случаях, клавише "Backspace" работает как , но не всегда! В основном, удаляет символ непосредственно перед текущей позицией курсора. >> Попробуйте это сейчас -- наберите несколько символов, потом удалите их нажимая несколько раз. Не волнуйтесь о изменениях этого файла; вы не изменяете главный учебник. Это ваша личная копия учебника. Когда строка текста становится слишком большой для строки экрана, строка текста "продолжается" на следующей строке экрана. Символ "обратное деление" ("\") с правой границы показывает, что строка будет продолжена. >> Вставляйте текст, пока не достигните правой границы, и продолжайте вставку. Вы увидите, как появится символ продолжения строки. >> Используйте для удаления текста, пока строка не поместится в экран снова. Символ продолжения строки исчезнет. Можно удалять символ НоваяСтрока так же, как и любой другой. Удаление символа НоваяСтрока между двумя строками приведет к склейке их в одну. Если результирующая строка слишком длинная, чтобы вместиться в экран, она будет отображена как продолженная строка. >> Переместите курсор в начало строки и нажмите . Это соединит текущую строку и предыдущую. >> Нажмите для вставки символа НоваяСтрока снова, вместо удаленного вами. Помните, что многие команды Emacs могут получать счетчик повторения; простые символы не исключение. Неберайте простые символы вставляя их по несколько за один раз. >> Попробуйте это -- наберите C-u 8 * для вставки ********. Теперь вы научились основному способу набрить что-нибудь в Emacs и исправлять ошибки. Так же вы можете удалять слова и строки. Здесь собраны операции удаления: удалить символ перед курсором C-d удалить символ следующий за (над) курсором M- Убить строку непосредственно перед курсором M-d Убить слово следующее за курсором C-k Убить все от курсора до конца строки M-k Убить все до конца предложения Заметьте, что и C-d против M- и M-d расширяют параллель начатую, C-f и M-f (да, это не реальный control-символ, но не нужно волноваться об этом). C-k и M-k как и C-e и M-e, проводят параллель между строками и предложениями. Когда вы удаляете более чем один символ сразу, Emacs сохраняет удаленный текст, чтобы вы могли вернуть его обратно. Возврат текста, удаленного ранее, называют "восстановление" ("yanking"). Вы можете восстановить удаленный текст в том же месте, или в любом другом. Вы можете восстановить текст несколько раз и получить много копий. Команда "восстановить" - C-y. Заметьте, что есть разница между "удалить" и "убить" что-нибудь. "Убитое" может быть восстановлено назад, а удаленное - нет. Обычно, команды, которые могут убирать много текста, сохраняют его, а команды, удаляющие один символ или просто пустую строку, не сохраняют удаленное. >> Переместите курсор на начало непустой строки. Теперь нажмите C-k чтоб убить текст в этой строке. >> Нажмите C-k еще раз. Вы видите, что это убъет символ НоваяСтрока следующий за этой строкой. Заметьте что первое C-k убивает содержимое строки, а второе C-k убивает саму строку и поднимает другие строки вверх. C-k обрабатывает числовой аргумент специальным образом: убивает много строк _И_ их содержимое. это не просто повторение. C-u 2 C-k уб`ет две строи и завершающие их символы НоваяСтрока; Ввод C-k дважды не сделает этого. Для того чтоб вернуть последний убитый текст в место расположение курсора наберите C-y. >> Попробуйте это; наберите C-y чтоб вернуть текст назад. Думайте о C-y как о способе вернуть что-то назад, что вы потеряли. Помните, если вы использовали несколько C-k' в строке, все убитые строки будут сохранены вместе, так, что C-y восстановит их вместе. >> Попробуйте это сейчас, нажмите C-k несколько раз. Теперь вернем этот убитый текст: >> Нажмите C-y. Теперь переместите курсор на несколько строк вниз, и снова нажмите C-y. Сейчас вы видите как можно скопировать некоторый текст. Что делать если есть некоторый текст, который вы хотите вернуть назад и потом убить что-то еще? C-y вернет не более чем последний удаленный текст. Но предыдущий текст не будет потерян. Вы сможете его вернуть назад используя команду M-y. После того как вы вернули последний удаленный текст, нажмите M-y, и замените этот восстановленный текст тем, который был убит ранее. Нажатие M-y снова и снова будет возвращать все ранее и ранее убитый текст. Когда вы достигните искомого текста, вам не нужно делать ничего более чтоб сохранить его. Просто продолжайте редактирование, оставив восстановленный текст там, где он есть. Нажимая M-y достаточное число раз, вы можете вернуться в начальную точку (наиболее раннее удаление). >> Убейте строку, покрутитесь курсором вокруг, потом удалите еще одну строку. Затем используйте C-y для восстановления второй убитой строки. Затем используйте M-y и она будет заменена первой убитой строкой. Нажмите еще несколько раз M-y чтоб увидеть что получится. Продолжайте делать это пока вторая убитая строка не вернется, и еще чуть-чуть. Если вам хочется, вы можете задавать для M-y положительные и отрицательны аргументы. * ОТМЕНА (UNDO) --------------- Если вы сделали изменения в тексте, и решили, что ошиблись, можете отменить изменения командой "отмена", C-x u. Обычно, C-x u отменяет изменения, сделанные одной командой; если повторить C-x u несколько раз подряд, каждый раз будет отменяться еще одна команда. Но есть два исключения: команды которые не изменяют текст не учитываются (это включает команды перемещения курсора и прокрутки), и самовставляющиеся (self-inserting) символы обрабатываются группами до 20. (Это уменьшает число C-x u которые вы можете набрать для отмены ввода текста.) >> Убейте эту строку используя C-k, затем наберите C-x u и она должна вернуться назад. C-_ альтернативная команда отмены; она работает также как и C-x u, но легче в использовании несколько раз подряд. Неудобное положение C-_ а на некоторых клавиатурах делает неочевидным способ ее набора. Поэтому мы предлагаем C-x u к использованию. На некоторых терминалах, вы можете набирать C-_ нажимая / и удерживая клавишу CTRL. Числовой аргумент для C-_ или C-x u работает как счетчик повторения. * ФАЙЛЫ ------- Чтобы созданный текст можно было редактировать позже, вы должны его поместить в файл. Иначе, он исчезнет когда вы выйдите из Emacs. Вы помещаете ваш текст в файл "открывая" файл. (Еще это называют "прийти" в файл.) (// в оригинале термины "finding", и "visiting") Открыть файл означает посмотреть его содержимое используя Emacs. Во многих случаях, это происходит когда вы редактируете файл сами. Однако ваши изменения, сделанные с использованием Emacs не будут зафиксированы, пока вы не "сохраните" ("save") файл. Так вы можете не оставлять полуизмененный файл в системе, если вы не хотите этого. Даже когда вы сохраняете файл, Emacs оставляет оригинальный файл с измененным именем, чтоб вы могли позже решить что ваши изменения были ошибочны. Если посмотреть в нижнюю часть экрана, вы увидите строку которая начинается с тире и содержит строку "Emacs: TUTORIAL.ru". Эта часть экрана всегда показывает имя файла который вы открыли. Итак, сейчас вы открыли файл с именем "TUTORIAL.ru" который является вашей персональной копией учебника Emacs. Любой файл который вы откроете, это имя файла с добавленной маленькой крапинкой. (Whatever file you find, that file's name will appear in that precise spot.) Команды для открытия и сохранения файла в отличии от других команд, которые вы уже выучили, требуют двух символов. Они оба начинаются с символа Control-x. Большая серия команд начинается с символа Control-x; Многие их них работают с файлами, буферами и похожими вещами. Это команды в два, три или четыре символа длиной. Следующее, что вам нужно знать о команде открытия файла - это то, что вы должны ввести имя файла, который нужно читать. Мы это называем команда "читающая аргумент с терминала" (в этом случае, аргумент это имя файла). После ввода команды C-x C-f Открыть (найти) файл Emacs попросит вас ввести имя файла. Имя файла вы наберете в нижней строке экрана. Нижняя строка называется минибуфер, он используется для короткого ввода. Вы можете использовать обычные команды редактирования Emacs для редактирования имени. Когда вы вводите имя файла (или любую информацию в минибуфер), вы можете отменить команду нажав C-g. >> Нажмите C-x C-f, затем нажмите C-g. Это отменит минибуфер, и команду C-x C-f которая использовала минибуфер. В итоге, вы не открыли ни одного файла. Когда вы завершите ввод имени файла, нажмите . Далее сработает команда C-x C-f, и откроет файл выбранный вами. Минибуфер исчезнет когда команд C-x C-f завершится. И мгновением позже содержимое файла появится на экране, и вы сможете его редактировать. Когда вы закончите редактирование, чтобы сохранить изменения наберите команду C-x C-s Сохранить файл Это скопирует текс из Emacs в файл. В первый раз, когда вы это сделаете, Emacs переименует оригинальный файл с новым именем, чтобы он не потерялся. Новое имя получается добавлением символа "~" к оригинальному имени файла. Когда сохранение завершится, Emacs напечатает имя записанного файла. Вы должны сохранять изменения достаточно часто, так чтобы не потерять много работы если вдруг система погибнет. >> Наберите C-x C-s, сохраните вашу копию учебника. Должна появиться надпись "Wrote ...TUTORIAL.ru" в нижней строке экрана. ЗАМЕЧАНИЕ: На некоторых системах, ввод C-x C-s заморозит экран и вы не увидите последующего вывода Emacs`а. Это означает что операционная система имеет "особенность" именуемую "flow control" перехватывающую C-s и не пропускающую этот символ к Emacs`у. Для разморозки экрана, нажмите C-q. Смотрите раздел "Spontaneous Entry to Incremental Search" руководства Emacs чтобы узнать как бороться с этой "особенностью". Вы можете открыть существующий файл для просмотра или редактирования. Вы так-же можете найти файл, который еще не существует. Другими словами - создать файл с помощью Emacs: найти файл, создать новый, и начать вводить текст. Когда вы скажите "сохрани" файл, Emacs создаст реальный файл с набранным вами текстом. Далее, как вы поняли, вы будите редактировать уже существующий файл. * БУФЕРА -------- Если вы находите второй файл с использованием C-x C-f, первый остается внутри Emacs. Вы можете переключиться назад найдя его снова C-x C-f. Это способ загрузить несколько файлов в Emacs. >> Создайте файл с именем "foo" набирая C-x C-f foo . Вставьте какой-нибудь текст, отредактируйте его, и сохраните "foo" набрав C-x C-s. Наконец, наберите C-x C-f TUTORIAL.ru чтобы вернуться назад к учебнику. Emacs сохраняет текст каждого файла внутри в объекте именуемый "буфер" ("buffer"). Открытие файла создает новый буфер внутри Emacs. чтобы увидеть список буферов созданных в текущем Emacs наберите C-x C-b Список буферов >> Попробуйте C-x C-b сейчас. Мы видим что каждый буфер имеет имя, и может иметь имя файла, содержимое которого в нем хранится. Некоторые буфера не соответствуют файлам. Например, буфер названный "*Buffer List*" не содержит никакого файла. В этом буфере содержится список буферов, который был создан командой C-x C-b. ЛЮБОЙ текст который ви видите в окне Emacs всегда является частью какого-либо буфера. >> Наберите C-x 1 чтобы избавиться от списка буферов. Если вы изменяете текст одного файла, потом открываете другой, то первый остается не сохраненным. Изменения останутся внутри Emacs, в файловом буфере. Создание или редактирование следующего файлового буфера не сказывается на первом буфере. Это очень удобно, но имейте в виду что вам нужно иметь удобный способ сохранить первый файловый буфер. Было бы неприятно каждый раз возвращаться назад с помощью C-x C-f и потом использовать C-x C-s. Поэтому существует C-x s Сохранить некоторые буфера. (Save some buffers) C-x s спрашивает вас о каждом буфере который содержит не сохраненные изменения. Для каждого такого буфера у вас спрашивают сохранять или не сохранять изменения. >> Вставьте строку текста, потом наберите C-x s. У вас должны спросить сохранять ли буфер с именем TUTORIAL.ru. Ответьте на вопрос да набрав "y". * ИСПОЛЬЗОВАНИЕ МЕНЮ -------------------- Если у вас X-терминал, вы заметите полосы меню вверху экрана Emacs. Вы можете использовать это меню для доступа ко всем наиболее общим командам Emacs, такие как "открыть файл" ("find file"). Вы сразу найдете что это просто, потому что вам не нужно запоминать сочетания клавиш необходимых для доступа к каждой команды. Когда вы привыкните к Emacs, вам будите легко использовать клавиатурные команды, потому что каждом пункте меню, к которому привязана сочетание клавиш, написано это сочетание. Заметим что много пунктов меню не содержат клавиатурные эквиваленты. Например, список меню со всеми доступными буферами. Вы можете переключить в любой буфер Просто найдя его имя в меню буферов (Buffers menu) и выбрав его. * ИСПОЛЬЗОВАНИЕ МЫШИ -------------------- Выполняемый в X, Emacs полностью интегрирован с мышью. Вы можете позиционировать курсор нажатием левой кнопки в желаемом месте, вы можете отмечать текст потянув мышку с нажатой левой кнопкой через ту часть, которую хотите отметить. (Или кликнуть левой кнопкой мышки в одном конце текста, затем переместиться в другой, и кликнуть еще раз, удерживая Shift чтобы отметить текст.) чтобы убить некоторый выделенный текст, вы можете использовать C-w или выбрать пункт меню "Вырезать" ("Cut") из меню "Редактировать" ("Edit"). Заметьте, что это *не* одно и то же: C-w сохраняет текст только внутри Emacs (аналогично C-k описанного ранее), "Вырезать" ("Cut") делает это же, и помещает текст в буфер обмена X (X clipboard), где он может быть доступен другим программам. чтобы получить текст из буфера обмена X, используйте команду "Вставить" ("Insert") из меню "Редактировать" ("Edit"). Средняя кнопка мыши обычно используется для выбора пунктов (items), видимых на экране. Например, если вы вошли в Info (on-line документация Emacs) используя C-h i или меню Помощь (Help), вы можете следовать подсвеченным ссылкам простым нажатием средней кнопки на них. Аналогично, если вы вводите имя файла (например в приглашении "открыть файл") и вы нажимаете TAB чтобы увидеть возможные варианты (completions), вы можете кликнуть среднюю кнопку мыши на одном из вариантов, чтобы выбрать его. Правая кнопка мыши вызывает всплывающее меню (popup menu). Содержимое этого меню изменяется в зависимости ото того где вы находитесь, и обычно содержит несколько часто используемых команд для более простого доступа к ним. >> Нажмите правую кнопку мыши сейчас. Вам нужно удерживать кнопку нажатой, чтобы сохранить меню открытым. (// You will have to hold the button down in order to keep the menu up.) * РАСШИРЕННЫЙ НАБОР КОМАНД -------------------------- У Emacs очень много команд, они могут быть назначены на все control- и meta- символы. Emacs обходит это, используя X-команду (eXtend). Есть две возможности: C-x Символ расширения (Character eXtend). За ним следуем один символ. M-x Именнованые расширенные команды (Named command eXtend). За ним следует имя команды. Это команды которые обычно используются, но вы уже выучили некоторые из них. Вы уже видели: команды работы с файлами C-x C-f - открыть, и C-x C-s сохранить. Другой пример - завершения работы с Emacs -- это команда C-x C-c. (не волнуйтесь о том, что вы потеряете сделанные изменения, C-x C-c предлагает сохранить изменения перед тем как удалит буфер Emacs.) C-z это команда *временного* выхода из Emacs -- вы можете вернуться в туже сессию Emacs после. На системах, которые допускают этого, C-z "приостанавливают" ("suspends") Emacs; Возвращают в оболочку (shell), но не закрывают Emacs. В большинстве оболочек вы можете продолжить работу в Emacs используя команду `fg' или `%emacs'. В системах не поддерживающих приостанов, C-z создает новую оболочку (subshell), запущенную из-под Emacs чтобы дать вам возможность выполнить другую программу, и потом вернуться в Emacs; Это не настоящий выход из Emacs. В этом случае, команда `exit' вернет вас в Emacs из оболочки. Используйте C-x C-c если вы хотите выйти (log out) из системы. Это также используется чтобы выйти из Emacs вызванного из почтовой программы, или другой утилиты, которая может не знает как справиться с приостановленным Emacs. Обычно, таки если вы не выходите из системы, лучше приостановить Emacs используя C-z вместо выхода их него. Очень много C-x команд. Эти вы уже выучили: C-x C-f Открыть файл. C-x C-s Сохранить файл. C-x C-b Список буферов. C-x C-c Выход из Emacs. C-x u Отмена. Именованные расширенные команды используются гораздо реже, или используются только в определенных режимах. В качестве примера команда замена строки, которая заменяет одну строку на другую во всем тексте. Когда вы наберете M-x, Emacs предложит вам ввести имя команды в нижней строке экрана; в нашем случае, "replace-string". Только наберите "repl s" и Emacs дополнит имя. Завершите имя вводом . Команда замены строки (replace-string) требует два аргумента -- строку которая будет заменена, и строка на которую нужно заменить. Вы должны завершать каждый аргумент вводом . >> Переместите курсор на две пустые строки ниже этой. Наберите M-x repl schangedaltered. Заметьте как эта строка изменится: вы замените слово c-h-a-n-g-e-d словом "altered" везде, где оно встретится, ниже позиции курсора. * АВТОСОХРАНЕНИЕ ---------------- Когда вы модифицируете файл, но не сохраняете его, вы можете потерять информацию в случае краха системы. чтобы защитить вас от этого, Emacs периодически записывает каждый файл, который вы редактируете. Автосохранение происходит в файл, имя которого такое же, но начинается и заканчивается символом "#"; например, если ваш файл называется "hello.c", то автосохраненный файл будет называться "#hello.c#". Когда вы сохраните файл обычным способом. Emacs удалит автосохраненный файл. Если система подвисает, вы можете восстановить ваши изменения который были сохранены автоматически, путем открытия нормального файла (файла который вы редактировали, не автосохраненного) и затем набрать M-x recover file. Когда у вас спросят подтверждение, наберите yes чтобы восстановить автосохраненные данные. * ОБЛАСТЬ ЭХО (ECHO AREA) ------------------------- Если Emacs видит что вы медленно набираете команды, он показывает их вам внизу экрана, в области называемой "область эхо". Область эхо это нижняя строка экрана. * СТРОКА СОСТОЯНИЯ ------------------ Строка сразу над областью эхо называется "строка состояния". Выглядит эта строка примерно так: --**-XEmacs: TUTORIAL.ru (Fundamental)--L670--66%---------------- Эта строка сообщает полезную информацию о состоянии Emacs и текста, который вы редактируете. Вы уже знаете что означает имя файла - это файл, который вы открыли. -NN%-- показывает текущую позицию курсора в тексте; это означает что NN процентов текста выше чем начало экрана. Если первая строка находится в первой строке экрана, вы там увидите --Top-- вместо --00%--. Если последняя строка отображается на экране, там будет --Bot--. Если текст настолько мал, что весь вмещается в экран, строка состояния сообщит --All--. Звездочки в начале строки означают что вы изменяли текст. Как только вы открыли или сохранили файл, эта часть строки будет содержать не звездочки, а тире. Часть строки статуса внутри скобочек сообщает вам режим редактирования, которым вы пользуетесь. Стандартный режим - Fundamental, его вы используете и сейчас. Это пример "основного режима" ("major mode"). Emacs имеет много различных основных режимов. Некоторые из режимов означают, что вы редактируете текст на различном языке и/или различные виды текста, такие как Lisp-режим, Text-режим и пр. В любое время только один основной режим активирован, и его название вы можете найти в скобочках, где сейчас находится слово "Fundamental" (базовый). Каждый основной режим имеет несколько отличительных команд. Например, команды создания комментария в программе, и поскольку в каждом языке программирования комментарии записываются по-своему, каждый основной режим вставляет их по-разному. Каждый основной режим имеет именованную команду, которая включает его. Например, M-x fundamental-mode - команда, которая переключает в базовый (Fundamental) режим. Если вы редактируете английский текст, например как этот (//конечно не именно этот, а TUTORIAL) файл, вы вероятно должны переключиться в Text-режим. >> Наберите M-x text-mode. Не волнуйтесь, ни одна из выученных вами команд Emacs не изменилась. Но вы можите заметить, что M-f и M-b теперь различать апострофы как части слова. Ранее, в базовом режиме (Fundamental mode), M-f и M-b понимали апострофы как разделители слов. Основной режим обычно делает небольшие изменения, такие как: большинство команд делают "туже работу" в каждом из режимов, но их работа отличается какой-нибудь мелочью. Для просмотра документации о вашем текущем основном режиме, нажмите C-h m. >> Используйте C-u C-v один раз или более, чтобы расположить эту строку ближе к верху экрана. >> Наберите C-h m, что посмотреть отличия Text-режима от базового. >> Наберите q чтобы убрать документацию с глаз долой :) Основной режим называется основным потому, что есть несколько дополнительных (minor) режимов. Дополнительные режимы не альтернативы к основным, они только чуть-чуть модифицируют их. Каждый дополнительный режим включается/выключается независимо от других дополнительных режимов, и независимо от вашего основного режима. Вы можете использовать основной режим без дополнительных, или с любой их комбинацией. Один из дополнительных режимов очень полезен, особенно для редактирования английского текста - это режим автозаполнения (Auto Fill mode). Когда этот режим включен, Emacs разрывает строки между словами автоматически, когда вы вставляете текст и делаете строки слишком длинными. Вы можете включить режим автозаполнения набрав M-x auto-fill-mode. Когда этот режим включен, его можно выключить - M-x auto-fill-mode. Если режим включен - команда его выключит, если выключен - включит. Мы называем это команда "переключения режима". >> Наберите M-x auto-fill-mode. Затем вставляйте строку из "фыва " пока не увидите как она разделится на две строки. Вы должны помещать пробелы между словами, потому что режим автозаполнения разделяет строки только по пробелам. Граница обычно выставлена на 70-ти символах, но вы можете изменить ее используя команду C-x f. Вы должны задать границу в виде числового аргумента для этой команды. >> Введите C-x f с аргументом 20. (C-u 2 0 C-x f). затем вводите какой-нибудь текст, и смотрите как Emacs заполняет линии по 20 символов в каждой. Верните значение границы 70 назад, используя C-x f снова. Если вы сделали изменения в середине параграфа, автозаполнение не перестроит текст для вас. Чтобы перестроить параграф, наберите M-q (Meta-q) в то время, когда курсор будет внутри параграфа. >> Переместите курсор в предыдущий параграф, и нажмите M-q. * ПОИСК ------- Emacs умеет искать строки (это непрерывные группы символов или слова) вперед по тексту, или назад. Поиск строки это команда перемещения курсора; она перемещает курсор в следующую точку, где найдена искомая строка. Команда поиска Emacs отличаются от аналогичных команд большинства других редакторов тем, что она инкрементальная. Это означает что поиск происходит по мере того как вы набираете искомую строку. Команда, начинающая поиск вперед - C-s, и C-r ищет назад. ПОДОЖДИТЕ! Не нужно пробовать это прямо сейчас. Когда вы нажмете C-s вы увидите строку "I-search", появившуюся в области эхо. Вам сообщается что Emacs ждет ввода слова, которое вы хотите найти. завершает поиск. >> Теперь, нажмите C-s для начала поиска. Медленно, одну букву за один раз, набирайте слово, 'курсор', останавливаясь после каждой введенной буквы, замечая что происходит с курсором. Сейчас вы нашли первое вхождение слова "курсор". >> Нажмите C-s снова, чтобы найти следующее вхождение слова "курсор". >> Теперь нажмите четыре раза и проследите за перемещениями курсора. >> Нажмите для завершения поиска. Вы видели что происходило? Emacs, в режиме инкрементального поиска, пытался переходить к строкам совпадающим с набираемой вами, подсвечивая их для вас. чтобы перейти к следующему вхождения слова 'курсор' просто нажмите C-s снова. Если больше нет вхождений, Emacs издаст звуковой сигнал, и скажет что ваш поиск не удался ("failing"), C-g то же толжен отменить поиск. ЗАМЕЧАНИЕ: На некоторых системах, ввод C-x C-s заморозит экран и вы не увидите последующего вывода Emacs`а. Это означает что операционная система имеет "особенность" именуемую "flow control" перехватывающую C-s и не пропускающую этот символ к Emacs`у. Для разморозки экрана, нажмите C-q. Смотрите раздел "Spontaneous Entry to Incremental Search" руководства Emacs чтобы узнать как бороться с этой "особенностью". Если вы во время инкрементального поиска нажмете , вы можете заметить что последний символ в искомой строке удалился, и поиск вернулся к предыдущему найденному месту. Например, предположим вы набрали "c", поиск перейдет к первому вхождению символа "c". Теперь если вы наберете "u", курсор перейдет к первому вхождению "cu". Нажатие удалит символ "u" их строки поиска, и курсор вернется к первому вхождению "c". Если вы во время поиска введете control- или meta- символ (за некоторыми исключениями -- символы вызывающие поиск, а именно C-s и C-r), поиск прекратится. C-s начинает поиск и смотрит на любые вхождения искомой строки ПОСЛЕ текущей позиции курсора. Если вы хотите найти что-то ранее в тексте, нажмите C-r. Все что мы говорили о C-s применимо и к C-r, за исключением противоположного направления поиска. * МНОГО ОКОН (MULTIPLE WINDOWS) ------------------------------- Одна из приятных особенностей Emacs это то, что вы можете отображать более чем одно окно на экране одновременно. >> Переместите курсор на эту линию, и наберите C-u 0 C-l. >> Теперь, наберите C-x 2, что разделит экран на два окна. Оба окна отображают учебник. Курсор остался в верхнем окне. >> Нажмите C-M-v для прокрутки нижнего окна. (если у вас нет настоящей кнопки Meta (Alt), нажмите ESC C-v.) >> Нажмите C-x o ("o" от слова "other" - другое) для перемещения курсора в нижнее окно. >> Используйте C-v и M-v в нижнем окне что прокручивать его. Продолжите чтение этих инструкций в верхнем окне. >> Нажмите C-x o снова чтобы переместить курсор назад в верхнее окно. Курсор в верхнем окне там же, где и был до того. Вы можете продолжать переключаться между окнами, используя C-x o. Каждое окно хранит свою позицию курсора, но только одно показывает курсор. Все обычные команды редакции применяются к окну, в котором отображается курсор. Мы называем его "выбранное окно" ("selected window"). Команда C-M-v очень удобна, когда вы редактируете текст в одном окне, и используете второе в качестве справочника. Вы можете всегда сохранять курсор в окне редактирования и последовательно продвигаться во втором, используя C-M-v. C-M-v пример CONTROL-META символа. Если у вас есть настоящая кнопка META (Alt), вы можете набрать C-M-v нажав одновременно CTRL и META и не отпуская нажать v. И не важно кто будет нажат первым, CTRL или META, потому что эти кнопки модифицируют тип символа. Если у вас нет настоящей кнопки META, и вы используете ESC вместо нее, порядок должен быть следующим: вы должны нажать ESC а следом CTRL-v; CTRL-ESC v не будет работать. Потому, что ESC имеет свой собственный символ, это не модифицирующая кнопка. >> Нажмите C-x 1 (в верхнем окне) чтобы избавиться от нижнего. (Если вы нажали C-x 1 в нижнем окне, то вы избавились от верхнего. Понимайте эту команду как "Оставить только одно окно, то в котором я сейчас нахожусь"). Вам не нужно отображать один и тот же буфер в обоих окнах. Если вы используете C-x C-f чтобы открыть файл в одном окне, другое останется без изменения. Вы можете открывать файлы в каждом окне независимо. Есть другой путь использовать два окна отображающих разные файлы: >> Наберите C-x 4 C-f затем имя одного и ваших файлов. Завершите . Посмотрите что выбранный файл появился в нижнем окне. Курсор перешел туда же. >> Наберите C-x o чтобы вернуться в верхнее окно, и C-x 1 чтобы удалить нижнее окно. * РЕКУРСИВНЫЕ УРОВНИ РЕДАКТИРОВАНИЯ (RECURSIVE EDITING LEVELS) -------------------------------------------------------------- Иногда вы будете включать так называемые "рекурсивные уровни редактирования". На это указывают прямоугольные скобочки в строке состояния, окружающие обычные скобки вокруг имени основного режима. Например вы можете увидеть [(Fundamental)] вместо (Fundamental). чтобы выйти из рекурсивных уровней редактирования, нажмите ESC ESC ESC. Это многоцелевая команда "выход". Вы так же можете использовать ее для уничтожения лишних окон, и выхода из минибуфера. >> Нажмите M-x чтобы попасть в минибуфер; затем нажмите ESC ESC ESC чоб выйти. Вы не можете использовать C-g чтобы уйти из рекурсивных уровней редактирования. Потому что C-g используется для отмены команды и аргументов БЕЗ рекурсивных уровней редактирования. * КАК ПОЛУЧИТЬ ПОМОЩЬ (GETTING MORE HELP) ----------------------------------------- В этом учебнике мы попытались снабдить вас только той информацией, которая поможет начать использовать Emacs. Очень много информации доступно в Emacs, и невозможно всю ее представить здесь. Однако, вы можете выучить больше возможностей Emacs, узнать другие полезные особенности. Emacs предоставляет команды для чтения документации о командах Emacs. Эти команды "помощи" ("help") все начинаются с символа Control-h, который является "символом помощи". чтобы использовать особенности Помощи, нажмите C-h, и затем символ, который расскажет какой именно вид помощи вы хотите получить. Если вы ДЕЙСТВИТЕЛЬНО растерялись, наберите C-h ? и Emacs расскажет вам какую помощь он может вам предоставить. Если вы нажали C-h и передумали обращаться к помощи, просто нажмите C-g чтобы отменить эту команду. (Кое-где переназначают символ C-h. Реальной необходимости в этом нет, сообщите о ней системному администратору. Тем временем, если C-h не вызывает сообщение помощи внизу экрана, попробуйте набрать M-x help RET вместо этого.) Самая основная возможность ПОМОЩИ - C-h c. Нажмите C-h, затем c, и символ команды или последовательность, и Emacs отобразит очень краткое описание команды. >> Нажмите C-h c Control-p. Сообщение должно выглядеть примерно так C-p runs the command previous-line (C-p выполняет команду previous-line {предыдущая-линия}) Вам сообщают "имя функции". Имена функции используются в основном для настройки и расширения Emacs. Имена функций выбраны так, чтобы показать что именно команда делает, так же они позволяют с помощью этой краткой информации легче запомнить уже выученные команды. Многосимвольные команды, такие как C-x C-s и (если у вас нет кнопки META или EDIT или ALT) v так же будут доступны после C-h c. Получите больше информации о команде используя C-h k вместо C-h c. >> Наберите C-h k Control-p. Вы увидите описание функции, а также ее имя в отдельном окне Emacs. Когда вы завершите чтение, нажмите q чтобы избавиться от текста помощи. Есть еще несколько полезных опций C-h: C-h f Описывает функцию. Вам необходимо набрать имя функции. >> Попробуйте набрать C-h f previous-line. Это распечатает информацию Emacs о этой функции, которая выполняется командой C-p. C-h a Hyper Apropos. Введите ключевое слово и Emacs покажет вам список всех функций и переменных, имена которых содержат это слово. Команды, которые могут быть вызваны через Meta-x, будут отмечены звездочкой слева. >> Наберите C-h a newline. это отобразит полный список функций и переменных имена которых начинаются с "newline". Нажмите или кликните средней кнопкой мышки чтобы получить больше о функции или переменной. Нажмите `q' чоб выйти из hyper-apropos. * ЗАКЛЮЧЕНИЕ ------------ Запомните, чтобы выйти из Emacs насовсем используйте C-x C-c. чтобы временно выйти в оболочку (shell) и потом вернуться обратно, используйте C-z. (в X, это свернет текущее окно Emacs в иконку.) Этот учебник должен быть понятен всем новым пользователям, если вы найдете что-нибудь неясное, не нужно сидеть и порицать себя - жалуйтесь! COPYING ------- Этот учебник произошел из длинной серии учебников Emacs, начатой с однажды написанного by Stuart Cracraft для оригинального Emacs. Ben Wing подправил учебник для X Windows. Martin Buchholz и Hrvoje Niksic добавили много исправлений для XEmacs. Эта версия учебника, как и GNU Emacs, защищена правами копирования (copyrighted), и приходит с ограничениями распространения копий со следующими соглашениями: Copyright (c) 1985, 1996 Free Software Foundation Permission is granted to anyone to make or distribute verbatim copies of this document as received, in any medium, provided that the copyright notice and permission notice are preserved, and that the distributor grants the recipient permission for further redistribution as permitted by this notice. Permission is granted to distribute modified versions of this document, or of portions of it, under the above conditions, provided also that they carry prominent notices stating who last altered them. Условия копирования самого Emacs более сложные, но в том же духе. Пожалуйста, прочтите файл COPYING и затем дайте копию GNU Emacs ваши друзьям. Help stamp out software obstructionism ("ownership") by using, writing, and sharing free software! // замечания, исправления ошибок с нетерпением жду по адресу bor@vb.dn.ua // Vladimir Bormotov.