Mercurial > emacs
view etc/TUTORIAL.ru @ 51379:f61b3dac769b
(sh-is-quoted-p): New fun.
(sh-font-lock-paren): Use it to allow \C in case patterns.
(sh-get-indent-info): Check the \n before the line for string-status.
(sh-feature): Remove unused var `function'.
(sh-get-indent-info): Remove unused variables.
(sh-prev-thing): Remove unused vars `going', `n', and `found'.
(sh-set-indent): Remove unused var `new-val' and `val0'.
(sh-learn-buffer-indent): Remove unused vars `last-pos' and `lines'.
(sh-guess-basic-offset): Remove unused var `return' and `j'.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Sun, 01 Jun 2003 17:36:41 +0000 |
parents | 23a1cea22d13 |
children | 695cf19ef79e d7ddb3e565de |
line wrap: on
line source
;; -*- coding: cyrillic-koi8; -*- Copyright (c) 1985, 1996 Free Software Foundation, Inc. See end for conditions. Вы читаете учебник Emacs. Для управления Emacs обычно используется ключ (сочетание клавиш клавиатуры и/или кнопок мыши), включающий в себя клавишу CONTROL (иногда отмечаемая как CTRL или CTL) или клавишу META (иногда помеченную как ALT или EDIT). В дальнейшем вместо того, чтобы каждый раз писать META или CONTROL мы будем использовать следующее сокращение: C-<chr> следует удерживать клавишу CONTROL пока набирается символ <chr> Так, C-f должно означать: нажать клавишу CONTROL и f. M-<chr> следует удерживать клавишу META пока набирается символ <chr>. Если нет клавиши META, ALT или EDIT, то нажмите <ESC>, отпустите ее, а потом наберите символ <chr>. Важное замечание: для завершения сеанса Emacs, наберите C-x C-c. (Два символа). Символы ">>" с левой стороны указывают, что вам нужно делать, чтобы применить команду. Например: <<Середина страницы оставлена пустой для учебных целей. Текст прдолжается ниже>> >> Теперь нажмите C-v (Просмотр следующего экрана) для перемещения на следующий экран. (Выполните это, удерживая клавишу CONTROL нажимая v). Теперь вы должны это сделать еще раз, когда закончите читать экран. Обратите внимание на то, что, пока вы движетесь с экрана на экран, перекрываются две строчки; это обеспечивает некоторую непрерывность, так что вы можете продолжить читать текст. Первое что вам необходимо знать -- как передвигаться по тексту из одного места в другое. Вы уже знаете, как переместиться вперед один экран, используя ключ C-v. Для перемещения назад на один экран, нажмите M-v (удерживайте клавишу META и наберите v, или нажмите <ESC>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 и посмотрите как диаграмма разместится в центре экрана. Вам будет несложно запомнить эти команды по буквам -- 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 еще раз, чтобы перейти к началу следующей строки. Когда вы перемещаетесь за верхний или нижний край экрана, текст, находящийся за экраном, сдвигается внутрь экрана. Это называется "прокрутка (scrolling)". Прокрутка позволяет 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 8 C-v прокрутит экран на 8 строк. >> Сейчас попробуйте комбинацию C-u 8 C-v. Эта команда должна прокрутить экран на 8 строк вверх. Если вы хотите прокрутить его вниз, можете задать аргумент для M-v. Если вы используете оконную систему, такую как X11 или MS-Windows, должна быть прямоугольная область именуемая полосой прокрутки с левой стороны окна Emacs. Вы можете прокручивать текст, используя манипулятор мышь. >> Попробуйте перемещать мышь при нажатой средней кнопке мыши. Вы увидите как текст прокручивается вверх и вниз. * УПРАВЛЕНИЕ КУРСОРОМ НА X-ТЕРМИНАЛЕ ------------------------------------ Если у вас X-терминал, то вам, вероятно, для управления курсором покажется более легким использовать клавиши на цифровой клавиатуре (справа). Стрелки влево, вправо, вверх и вниз передвигают курсор в ожидаемом направлении; они работают точно также как 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. Все эти команды могут получать цифровой аргумент, как рассказано выше. Вы можете использовать ускоренный способ ввода этого аргумента: просто нажмите 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. Если вы нажали <ESC> по ошибке, вы так же можете избавиться от этого нажатием C-g. * ЗАПРЕЩЕННЫЕ КОМАНДЫ (DISABLED COMMANDS) ----------------------------------------- Некоторые команды Emacs "запрещены", поскольку начинающие пользователи могут их случайно использовать. Если вы набрали одну из запрещенных команд, то Emacs покажет сообщение говорящее о том, какая команда вызывается, и спросит, хотите ли вы продолжить и выполнить эту команду. Если вы действительно хотите попробовать выполнить команду, то нажмите клавишу Пробел (Space) в ответ на этот вопрос. Обычно, если вы не хотите выполнять запрещенную команду, то отвечайте на вопрос нажатием клавиши "n". >> Нажмите `C-x C-l' (выключенная команда), потом ответьте "n" на вопрос. * ОКНА ------ Emacs может иметь несколько окон, каждое из которых отображает свой текст. Мы объясним позже как использовать множество окон. Прямо сейчас мы хотим объяснить как избавляться от лишних окон и вернуться к редактированию в одном окне. Выполнить это очень просто: C-x 1 Одно окно. (закрыть все другие окна). Это CONTROL-x со следующей цифрой 1. C-x 1 развернет окно которое содержит курсор, так, чтобы оно заняло весь экран. При этом будут удалены все остальные окна. >> Переместите курсор на эту строку и нажмите C-u 0 C-l. >> Наберите CONTROL-h k CONTROL-f. Посмотрите, как текущее окно сожмется, когда новое появится и отобразит документацию на команду CONTROL-f. >> Наберите C-x 1 и посмотрите как окно с документацией исчезнет. Эта команда отличается от других команд, которые вы изучили, тем, что она состоит из двух символов. Она начинается со знака CONTROL-x. Есть целый набор команд, которые начинаются с CONTROL-x; многие из них работают с окнами, буферами, файлами и аналогичными вещами. Эти команды имеют длину 2, 3 или 4 знака. * ВСТАВКА И УДАЛЕНИЕ -------------------- Если вы хотите вставить текст, просто наберите текст. Символы, которые вы можете видеть, такие как A, 7, *, и пр. понимаются Emacs'ом как текст и вставляются немедленно. Нажмите <Return> (кнопка перевода каретки) для вставки символа новой строки. Вы можете удалить последний набранный символ нажимая клавишу <Delete>. Клавиша <Delete> на клавиатуре может быть обозначена как "Del". В некоторых случаях, клавиша "Backspace" работает как <Delete>, но не всегда! В основном, <Delete> удаляет символ непосредственно перед текущей позицией курсора. >> Попробуйте выполнить это сейчас -- наберите несколько символов, потом удалите их нажимая <Delete> несколько раз. Не волнуйтесь о изменениях этого файла; вы не изменяете главный учебник. Это ваша личная копия учебника. Когда строка текста становится слишком большой для строки экрана, строка текста "продолжается" на следующей строке экрана. Символ "обратное деление" ("\") (или если вы используете оконную систему, то маленькая изогнутая стрелка) с правой границы показывает, что строка будет продолжена. >> Вводите текст, пока не достигните правой границы, и продолжайте вставку. Вы увидите, как появится символ продолжения строки. >> Используйте <Delete> для удаления текста, пока строка не поместится в экран снова. Символ продолжения строки исчезнет. Можно удалять символ новой строки точно так же, как и любой другой. Удаление символа новой строки между двумя строками приведет к склейке их в одну. Если полученная строка слишком длинная, чтобы вместиться в экран, она будет отображена как продолженная строка. >> Переместите курсор в начало строки и нажмите <Delete>. Это соединит текущую строку с предыдущей. >> Нажмите <Return> для вставки символа новой строки снова, вместо удаленного вами. Помните, что многие команды Emacs могут получать счетчик повторения; простые символы не являются исключением. Набирайте простые символы вставляя их по несколько за один раз. >> Попробуйте выполнить это -- наберите C-u 8 * для вставки ********. Теперь вы научились основному способу набрать что-нибудь в Emacs и исправлять ошибки. Так же вы можете удалять слова и строки. Здесь собраны операции удаления: <Delete> удалить символ перед курсором C-d удалить символ следующий за (над) курсором M-<Delete> Убить строку непосредственно перед курсором M-d Убить слово следующее за курсором C-k Убить все от курсора до конца строки M-k Убить все до конца предложения Заметьте, что <Delete> и C-d против M-<Delete> и M-d расширяют параллель начатую, C-f и M-f (да, <Delete> это не реальный управляющий символ, но не нужно волноваться об этом). C-k и M-k, как и C-e и M-e, проводят параллель между строками и предложениями. Вы можете удалить любую часть буфера одним единообразным методом. Переместитесь на один из концов региона и наберите type C-@ или C-SPC (одну из них). (SPC обозначает клавишу пробела). Переместитесь на другой конец региона и наберите C-w. Эта операция удалит весь текст между двумя указанными позициями. >> Переместите курсор к букве В в начало предыдущего параграфа. >> Наберите C-SPC. Emacs должен отобразить в нижней части экрана сообщение "Mark set". >> Переместите курсор к букве о в слове "концов", на второй строке параграфа. >> Наберите C-w. Это удалит текст начиная с буквы В, и оканчивающуюся перед буквой о. Отличие между "убить (killing)" и "удалить (deleting)" заключается в том, что "убитый" текст может быть заново вставлен, в то время как "удаленные" части не могут быть вставлены. Вставка "убитого" текста называется "восстановление (yanking)". В общем, команды, которые могут удалять большие части текста, удаляют этот текст (они так настраиваются так, что вы можете восстановить текст), в то время как команды, которые удаляют только один символ, или только пустые строки и пробельные символы, выполняют удаление (так что вы не можете восстановить текст). >> Переместите курсор на начало непустой строки. Теперь нажмите C-k чтобы убить текст в этой строке. >> Нажмите C-k еще раз. Вы видите, что это убьет символ новой строки следующий за этой строкой. Заметьте, что первое C-k убивает содержимое строки, а второе C-k убивает саму строку и поднимает другие строки вверх. C-k обрабатывает числовой аргумент специальным образом: убивает много строк _И_ их содержимое. Это не просто повторение. C-u 2 C-k удалит две строи и завершающие их символы новой строки; ввод C-k два раза не сделает этого. Возврат назад убитого текста называется "восстановление (yanking)". (Думайте об этом, как о восстановлении или помещении назад, некоторого взятого текста). Вы можете восстановить удаленный текст в том же месте, или в любой другой точке буфера, или даже в другом файле. Вы можете восстановить текст несколько раз и получить много копий. Командой для восстановления текста является 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-_ нажимая / и удерживая клавишу CONTROL. Числовой аргумент для C-_ или C-x u работает как счетчик повторения. Вы можете отменить удаление текста точно также как отмену убития текста. Отличие между убийством и удалением чего-либо заключается в том, что вы можете восстановить убитый текст с помощью C-y; но это не делает различий для отмены. * ФАЙЛЫ ------- Чтобы созданный текст можно было редактировать позже, вы должны его поместить в файл. Иначе, он исчезнет когда вы выйдите из Emacs. Вы помещаете ваш текст в файл "открывая" файл. (Еще это называют "посетить" файл.) Открыть файл означает посмотреть его содержимое используя Emacs. Во многих случаях, это происходит когда вы редактируете файл сами. Однако ваши изменения, сделанные с использованием Emacs не будут зафиксированы, пока вы не сохраните файл. Так вы можете не оставлять полуизмененный файл в системе, если вы не хотите этого. Даже когда вы сохраняете файл, Emacs оставляет оригинальный файл с измененным именем, чтоб вы могли позже решить, что ваши изменения были ошибочны. Если вы посмотрите в нижнюю часть экрана, то вы увидите строку, которая начинается с тире и начинается с "--:-- TUTORIAL.ru" или чего-то подобного. Эта часть экрана всегда показывает имя файла который вы открыли. Итак, сейчас вы открыли файл с именем "TUTORIAL.ru" который является вашей персональной копией учебника Emacs. Для любого файла который вы откроете, имя этого файла появится в этом месте. Одной из специальных вещей, которую вам нужно знать о команде открытия файла -- это то, что вы должны ввести имя файла, который нужно читать. Мы это называем командой "читающая аргумент с терминала" (в этом случае, аргументом является имя файла). После ввода команды C-x C-f Открыть (найти) файл Emacs попросит вас ввести имя файла. Имя файла вы наберете в нижней строке экрана. Нижняя строка называется мини-буфер, он используется для короткого ввода. Вы можете использовать обычные команды редактирования Emacs для редактирования имени. Когда вы вводите имя файла (или любую информацию в мини-буфер), вы можете отменить команду нажав C-g. >> Нажмите C-x C-f, затем нажмите C-g. Это отменит мини-буфер, и команду C-x C-f которая использовала мини-буфер. В итоге, вы не открыли ни одного файла. Когда вы завершите ввод имени файла, нажмите <Return>. Далее сработает команда 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 <Return>. Вставьте какой-нибудь текст, отредактируйте его, и сохраните "foo" набрав C-x C-s. Наконец, наберите C-x C-f TUTORIAL.ru <Return> чтобы вернуться назад к учебнику. 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". * РАСШИРЕННЫЙ НАБОР КОМАНД -------------------------- У 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 1 Удаляет все окна кроме одного. C-x u Отмена. Именованные расширенные команды используются гораздо реже, или используются только в определенных режимах. В качестве примера команда замена строки, которая заменяет одну строку на другую во всем тексте. Когда вы наберете M-x, Emacs предложит вам ввести имя команды в нижней строке экрана; в нашем случае, "replace-string". Только наберите "repl s<TAB>" и Emacs дополнит имя. (<TAB> -- это клавиша табуляции, обычно находящаяся выше клавиш CapsLock или Shift слева на клавиатуре). Завершите имя вводом <Return>. Команда замены строки (replace-string) требует два аргумента -- строку которая будет заменена, и строка на которую нужно заменить. Вы должны завершать каждый аргумент вводом <Return>. >> Переместите курсор на две пустые строки ниже этой. Наберите M-x repl s<Return>changed<Return>altered<Return>. Заметьте как эта строка изменится: вы замените слово c-h-a-n-g-e-d словом "altered" везде, где оно встретится, ниже позиции курсора. * АВТОСОХРАНЕНИЕ ---------------- Когда вы изменяете файл, но не сохраняете его, то в случае краха системы вы можете потерять информацию. чтобы защитить вас от этого, Emacs периодически сохраняет каждый файл, который вы редактируете. Автосохранение происходит в файл, имя которого такое же, но начинается и заканчивается символом "#"; например, если ваш файл называется "hello.c", то автосохраненный файл будет называться "#hello.c#". Когда вы сохраните файл обычным способом. Emacs удалит автосохраненный файл. Если система подвисает, вы можете восстановить ваши изменения который были сохранены автоматически, путем открытия нормального файла (файла который вы редактировали, не автосохраненного) и затем набрав M-x recover-file<return>. Когда у вас спросят подтверждение, наберите yes<return> чтобы восстановить автосохраненные данные. * ОБЛАСТЬ ЭХО (ECHO AREA) ------------------------- Если Emacs видит что вы медленно набираете команды, он показывает их вам внизу экрана, в области называемой "область эхо". Область эхо -- это самая нижняя строка экрана. * СТРОКА РЕЖИМА ------------------ Строка сразу над областью эхо называется "строка состояния". Выглядит эта строка примерно так: --:** TUTORIAL (Fundamental)--L670--58%---------------- Эта строка сообщает полезную информацию о состоянии Emacs и текста, который вы редактируете. Вы уже знаете что означает имя файла -- это файл, который вы открыли. -NN%-- показывает текущую позицию курсора в тексте; это означает что NN процентов текста выше, чем начало экрана. Если первая строка находится в первой строке экрана, вы там увидите --Top-- вместо --00%--. Если на экране отображается последняя строка, то будет отображено --Bot--. Если текст настолько мал, что весь вмещается в экран, строка состояния сообщит --All--. Буква L и цифры показывают позицию другим способом: они показывают номер текущей строки с курсором. Звездочки в начале строки означают, что вы изменяли текст. Как только вы открыли или сохранили файл, эта часть строки будет содержать не звездочки, а тире. Часть строки статуса внутри скобок сообщает вам режим редактирования, которым вы пользуетесь. Стандартный режим -- Fundamental, его вы используете и сейчас. Это пример "основного режима" ("major mode"). Emacs имеет много различных основных режимов. Некоторые из режимов означают, что вы редактируете текст на различном языке и/или различные виды текста, такие как Lisp-режим, Text-режим и пр. В любое время действует только один основной режим, и его название вы можете найти в скобках, где сейчас находится слово "Fundamental" (базовый). Каждый основной режим имеет несколько отличительных команд. Например, команды создания комментария в программе, и поскольку в каждом языке программирования комментарии записываются по-своему, каждый основной режим вставляет их по-разному. Каждый основной режим имеет именованную команду, которая включает его. Например, M-x fundamental-mode - команда, которая переключает в базовый (Fundamental) режим. Если вы редактируете английский текст, например как этот (//конечно не именно этот, а TUTORIAL) файл, вы вероятно должны переключиться в Text-режим. >> Наберите M-x text mode<Return>. Не волнуйтесь, ни одна из выученных вами команд Emacs не изменилась. Но вы можите заметить, что M-f и M-b теперь различать апострофы как части слова. Ранее, в базовом режиме (Fundamental mode), M-f и M-b понимали апострофы как разделители слов. Основной режим обычно делает небольшие изменения, такие как: большинство команд делают "ту же работу" в каждом из режимов, но их работа отличается какой-нибудь мелочью. Для просмотра документации о вашем текущем основном режиме, нажмите C-h m. >> Используйте C-u C-v один раз или более, чтобы расположить эту строку ближе к верху экрана. >> Наберите C-h m, что посмотреть отличия Text-режима от базового. >> Наберите C-x 1 чтобы убрать документацию с глаз долой :) Основной режим называется основным потому, что есть несколько дополнительных (minor) режимов. Дополнительные режимы не являются альтернативами основным, они только немного изменяют их поведение. Каждый дополнительный режим включается/выключается независимо от других дополнительных режимов, и независимо от вашего основного режима. Вы можете использовать основной режим без дополнительных, или с любой их комбинацией. Один из дополнительных режимов очень полезен, особенно для редактирования текста - это режим автозаполнения (Auto Fill mode). Когда этот режим включен, Emacs разрывает строки между словами автоматически, когда вы вставляете текст и делаете строки слишком длинными. Вы можете включить режим автозаполнения набрав M-x auto fill mode<Return>. Когда этот режим включен, его можно выключить - M-x auto fill mode<Return>. Если режим включен -- команда его выключит, если выключен -- включит. Мы называем это командой "переключения режима". >> Наберите M-x auto fill mode<Return>. Затем вводите строку из слов "фыва " пока не увидите как она разделится на две строки. Вы должны помещать пробелы между словами, потому что режим автозаполнения разделяет строки только по пробелам. Граница обычно выставлена на 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 ждет ввода слова, которое вы хотите найти. <Return> завершает поиск. >> Теперь, нажмите C-s для начала поиска. Медленно, одну букву за один раз, набирайте слово 'курсор', останавливаясь после каждой введенной буквы и замечая что происходит с курсором. Сейчас вы нашли первое вхождение слова "курсор". >> Нажмите C-s снова, чтобы найти следующее вхождение слова "курсор". >> Теперь нажмите <Delete> четыре раза и проследите за перемещениями курсора. >> Нажмите <Return> для завершения поиска. Вы видели что происходило? Emacs, в режиме инкрементального поиска, пытался переходить к строкам совпадающим с набираемой вами, подсвечивая их для вас. Чтобы перейти к следующему вхождения слова 'курсор' просто нажмите C-s снова. Если больше нет вхождений, Emacs издаст звуковой сигнал, и сообщит что ваш поиск не удался ("failing"), C-g также должен отменить поиск. ЗАМЕЧАНИЕ: На некоторых системах, ввод C-s заморозит экран и вы не увидите последующего вывода Emacs`а. Это означает что операционная система имеет "особенность" именуемую "flow control" перехватывающую C-s и не пропускающую этот символ к Emacs`у. Для разморозки экрана, нажмите C-q. Смотрите раздел "Spontaneous Entry to Incremental Search" руководства Emacs чтобы узнать как бороться с этой "особенностью". Если вы во время инкрементального поиска нажмете <Delete>, вы можете заметить что последний символ в искомой строке удалился, и поиск вернулся к предыдущему найденному месту. Например, предположим, что вы набрали "c", поиск перейдет к первому вхождению символа "c". Теперь если вы наберете "u", курсор перейдет к первому вхождению "cu". Нажатие <Delete> удалит символ "u" их строки поиска, и курсор вернется к первому вхождению "c". Если вы во время поиска введете control- или meta- символ (за некоторыми исключениями -- символы вызывающие поиск, а именно C-s и C-r), поиск прекратится. C-s начинает поиск и смотрит на любые вхождения искомой строки ПОСЛЕ текущей позиции курсора. Если вы хотите найти что-то ранее в тексте, нажмите C-r. Все что мы говорили о C-s применимо и к C-r, за исключением противоположного направления поиска. * МНОЖЕСТВО ОКОН (MULTIPLE WINDOWS) ------------------------------- Одна из приятных особенностей Emacs это то, что вы можете одновременно отображать на экране более чем одно окно. >> Переместите курсор на эту линию, и наберите C-u 0 C-l (это CONTROL-L, а не CONTROL-1). >> Теперь, наберите 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 нажав одновременно CONTROL и META и не отпуская их нажать v. И не важно какая из клавиш будет нажата первой, CONTROL или META, поскольку эти кнопки модифицируют тип символа. Если у вас нет настоящей кнопки META, и вы используете ESC вместо нее, порядок должен быть следующим: вы должны нажать ESC, а затем CTRL-v; CONTROL-ESC v не будет работать. Потому, что ESC имеет свой собственный символ -- это не модифицирующая кнопка. >> Нажмите C-x 1 (в верхнем окне) чтобы избавиться от нижнего. (Если вы нажали C-x 1 в нижнем окне, то вы избавились от верхнего. Понимайте эту команду как "Оставить только одно окно, то в котором я сейчас нахожусь"). Вам не нужно отображать один и тот же буфер в обоих окнах. Если вы используете C-x C-f чтобы открыть файл в одном окне, другое останется без изменения. Вы можете открывать файлы в каждом окне независимо. Есть другой путь использовать два окна отображающих разные файлы: >> Наберите C-x 4 C-f затем имя одного и ваших файлов. Завершите <Return>. Посмотрите что выбранный файл появился в нижнем окне. Курсор перешел туда же. >> Наберите 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 не вызывает сообщение помощи внизу экрана, попробуйте вместо этого нажать клавишу F1 или набрать M-x help RET). Самая основная возможность ПОМОЩИ - C-h c. Нажмите C-h, затем c, и символ команды или последовательность, и Emacs отобразит очень краткое описание команды. >> Нажмите C-h c C-p. Сообщение должно выглядеть примерно так C-p runs the command previous-line (C-p выполняет команду previous-line {предыдущая-линия}) Вам сообщают "имя функции". Имена функции используются в основном для настройки и расширения Emacs. Имена функций выбраны так, чтобы показать что именно команда делает, так же они позволяют с помощью этой краткой информации легче запомнить уже выученные команды. Многосимвольные команды, такие как C-x C-s и (если у вас нет кнопки META или EDIT или ALT) <ESC>v так же будут доступны после C-h c. Получите больше информации о команде используя C-h k вместо C-h c. >> Наберите C-h k C-p. Вы увидите описание функции, а также ее имя в отдельном окне Emacs. Когда вы завершите чтение, нажмите C-x 1 чтобы избавиться от текста помощи. Вы можете выполнить какое-то редактирование во время просмотра текста справки, а только затем нажать C-x 1 Есть еще несколько полезных опций C-h: C-h f Описывает функцию. Вам необходимо набрать имя функции. >> Попробуйте набрать C-h f previous-line<Return>. Это распечатает информацию Emacs о этой функции, которая выполняется командой C-p. Аналогичная команда C-h v отображает документацию о переменных, значение которых вы можете изменить для настройки поведения Emacs. Вым нужно набрать имя переменной, когда Emacs запросит его. C-h a Hyper Apropos. Введите ключевое слово и Emacs покажет вам список всех функций и переменных, имена которых содержат это слово. Команды, которые могут быть вызваны через Meta-x, будут отмечены звездочкой слева. >> Наберите C-h a file<Return>. это отобразит полный список функций и переменных имена которых начинаются с "newline". Нажмите <Return> или кликните средней кнопкой мышки чтобы получить больше о функции или переменной. Нажмите `q' чтобы выйти из hyper-apropos. Это отобразит в другом окне список всех команд M-x со словом "file" в их именах. Также в списке, кроме команд, таких как find-file, вы увидите соответствующие символьные команды, такие как C-x C-f. >> Наберите C-M-v для прокрутки окна справки. Выполните это несколько раз. >> Наберите C-x 1 для удаления окна справки. C-h i Читать интерактивные руководства (a.k.a. Info). Эта команда переходит в специальный буфер с именем `*info*', где вы можете читать интерактивные руководства для пакетов установленных в вашей системе. Наберите m emacs <Return> для чтения руководства по Emacs. Если вы никогда ранее не использовали Info, то наберите ? и Emacs откроет учебник по возможностям режима Info. Однажды ознакомившись с этим учебником, вы должны использовать руководство Emacs Info в качетсве основной документации. * ЗАКЛЮЧЕНИЕ ------------ Запомните, что чтобы выйти из Emacs насовсем используется сочетание C-x C-c. А чтобы временно выйти в оболочку (shell) и потом вернуться обратно, используйте C-z. Этот учебник должен быть понятен всем новым пользователям, если вы найдете что-нибудь неясное, не нужно сидеть и порицать себя -- жалуйтесь! * COPYING ------- Этот учебник произошел из длинной серии учебников Emacs, начатой с однажды написанного by Stuart Cracraft для оригинального Emacs. Эта версия учебника, как и 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 вашим друзьям. Помогите уничтожить обструкционизм в области программного обеспечения ("владение") используя, создавая и распространяя свободное программное обеспечение! // замечания, исправления ошибок с нетерпением жду по адресу ottalex@beep.ru // Alex Ott. // Большое спасибо Владимиру Бормотову, на базе перевода которого был сделан // этот перевод