mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-14 09:39:42 +00:00
1158 lines
51 KiB
Ruby
1158 lines
51 KiB
Ruby
Учебник Emacs. Условия копирования приведены в конце файла.
|
||
|
||
Для управления Emacs'ом обычно используется ключ (key -- сочетание клавиш
|
||
клавиатуры и/или кнопок мыши), включающий в себя клавишу 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 (два
|
||
символа). Символы ">>" с левой стороны указывают, что вам нужно делать,
|
||
чтобы применить команду. Например:
|
||
<<Blank lines inserted here by startup of help-with-tutorial>>
|
||
[Середина страницы оставлена пустой в учебных целях. Текст продолжается ниже]
|
||
>> Теперь нажмите 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.
|
||
Найдите курсор снова и убедитесь, что возле него все тот же текст.
|
||
|
||
Вы также можете использовать клавиши PageUp и PageDn для перемещения между
|
||
экранами (если они есть на вашем терминале), но вы сможете работать более
|
||
эффективно, если будете использовать сочетания C-v и M-v.
|
||
|
||
|
||
* БАЗОВЫЕ КОМАНДЫ УПРАВЛЕНИЯ КУРСОРОМ
|
||
-------------------------------------
|
||
|
||
Движение от экрана к экрану удобно, но как переместиться в определенное
|
||
место в тексте на экране?
|
||
|
||
Есть несколько способов выполнения этой операции. Вы можете использовать
|
||
клавиши управления курсором (стрелки), но более эффективным будет сохранение
|
||
рук в их стандартной позиции и использовать команды 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 покажет сообщение,
|
||
говорящее о том, какая команда вызывается, и запросит у вас, хотите ли вы
|
||
продолжать работу и выполнять данную команду.
|
||
|
||
Если вы действительно попробовать выполнить команду, то нажмите клавишу
|
||
<SPC> (пробел) в ответ на заданный вопрос. Обычно, если вы не хотите
|
||
выполнять запрещенную команду, то ответьте на вопрос нажатием клавиши "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; многие из них работают с
|
||
окнами, буферами, файлами и аналогичными вещами. Эти команды состоят из
|
||
двух, трех или четырех знаков.
|
||
|
||
|
||
* ВСТАВКА И УДАЛЕНИЕ
|
||
--------------------
|
||
|
||
Если вы хотите вставить текст, то просто набирайте его. Символы, которые вы
|
||
можете видеть, такие как A, 7, *, и пр. понимаются Emacs'ом как текст и
|
||
вставляются немедленно. Нажмите <Return> (клавиша перевода каретки), чтобы
|
||
вставить символ новой строки.
|
||
|
||
Вы можете удалить набранный символ, нажимая клавишу <Delback>. <Delback> --
|
||
это клавиша на клавиатуре, которую вы используете и вне Emacs для удаления
|
||
последнего набранного символа. Обычно это большая клавиша, расположенная
|
||
несколько выше клавиши <Return>; обычно она помечена как "Delete", "Del"
|
||
или "Backspace".
|
||
|
||
Если большая клавиша помечена как "Backspace", то это то, что вам нужно
|
||
использовать тогда, когда вы будете читать про <Delback>. Если у вас к тому
|
||
же есть и клавиша, помеченная как "Delete", но она имеет другую функцию,
|
||
отличную от <Delback>.
|
||
|
||
Вообще говоря, <Delback> удаляет символ непосредственно перед текущей
|
||
позицией курсора.
|
||
|
||
>> Попробуйте выполнить это сейчас -- наберите несколько символов, а затем
|
||
удалите их нажимая <Delback>. Не волнуйтесь об изменениях этого файла --
|
||
вы не изменяете главный учебник; это ваша личная копия учебника.
|
||
|
||
Когда строка текста становится слишком большой для строки экрана, то она
|
||
"продолжается" на следующей строке экрана. Символ "обратный слэш" ("\") (или
|
||
если вы используете оконную систему, то это будет значок в виде маленькой
|
||
изогнутой стрелки) с правой границы показывает, что строка будет
|
||
продолжаться с предыдущей строки.
|
||
|
||
>> Вводите текст, пока он не достигнет правой границы, и продолжайте вставку
|
||
символов. Вы увидите, как появится символ продолжения строки.
|
||
|
||
>> Используйте <Delback> для удаления текста до тех пор, пока строка не
|
||
поместится в экран снова. Символ продолжения строки исчезнет с экрана.
|
||
|
||
Символ новой строки можно удалять точно так же, как и любой другой символ.
|
||
Удаление символа новой строки между двумя строками приведет к их склейке в
|
||
одну. Если полученная строка будет слишком длинной, чтобы вместиться в
|
||
экран, то она будет отображена как строка с продолжением, как это было
|
||
описано выше.
|
||
|
||
>> Переместите курсор в начало строки и нажмите <Delback>. Это соединит
|
||
текущую строку с предыдущей.
|
||
|
||
>> Нажмите <Return> для вставки нового символа строки, вместо удаленного
|
||
вами.
|
||
|
||
Помните, что многие команды Emacs могут получать счетчик повторения; простые
|
||
символы не являются исключением. Вы можете вставлять по несколько символов,
|
||
используя счетчики повторений.
|
||
|
||
>> Попробуйте проверить это -- наберите C-u 8 * для вставки ********.
|
||
|
||
Теперь вы научились основам набора текста в Emacs и исправления ошибок. Вы
|
||
также можете удалять слова и строки. Здесь приведен список операций
|
||
удаления:
|
||
|
||
<Delback> удалить символ перед курсором
|
||
C-d удалить символ следующий за (над) курсором
|
||
|
||
M-<Delback> убить слово, стоящее перед курсором
|
||
M-d убить слово, следующее за курсором
|
||
|
||
C-k убить все от курсора до конца строки
|
||
M-k убить все до конца предложения
|
||
|
||
Заметьте, что <Delback> и C-d, вместе с M-<Delback> и M-d расширяют
|
||
параллель, начатую C-f и M-f (да, <Delback> -- это не настоящий управляющий
|
||
символ, но не нужно об этом волноваться). C-k и M-k, как и C-e и M-e,
|
||
проводят параллель между строками и предложениями.
|
||
|
||
Вы можете убить любую часть буфера одним методом. Переместитесь на один
|
||
из концов выбранной области и нажмите 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 несколько раз подряд, то каждый раз будет отменяться еще одна команда.
|
||
|
||
Но есть два исключения -- команды не изменяющие текст, не учитываются (сюда
|
||
включаются команды перемещения курсора и прокрутки), и команды вставки
|
||
символов собираются в группы до 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. Для любого файла, который вы откроете, 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".
|
||
|
||
Вы можете открыть существующий файл для просмотра или редактирования. Вы
|
||
также можете открыть файл, который еще не существует. Таким образом вы
|
||
можете создать файл с помощью 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 прямо сейчас.
|
||
|
||
Мы видим, что каждый буфер имеет имя и может иметь связанное с ним имя
|
||
файла, содержимое которого хранится в данном буфере. ЛЮБОЙ текст, который
|
||
вы видите в окне Emacs'а, всегда является частью какого-либо буфера.
|
||
|
||
>> Наберите C-x 1, чтобы избавиться от списка буферов.
|
||
|
||
Когда у вас есть несколько буферов, только один из них является "текущим" в
|
||
конкретный момент времени. Это тот буфер, который вы редактируете. Если вы
|
||
хотите редактировать другой буфер, то вы должны "переключиться" к нему.
|
||
Если вы хотите переключиться к буферу, связанному с файлом, то вы можете
|
||
открыть этот файл снова с помощью C-x C-f. Но есть более простой способ --
|
||
использовать команду C-x b. В качестве аргумента для данной команды вы
|
||
должны указать имя буфера.
|
||
|
||
>> Наберите C-x b foo <Return> для переключения в буфер "foo", который
|
||
хранит текст файла "foo". Затем наберите C-x b TUTORIAL.ru <Return>
|
||
для возвращения в буфер с данным учебником.
|
||
|
||
Чаще всего имя буфера совпадает с именем файла (только без имен каталогов).
|
||
Но иногда это не так. Список буферов, который вы создаете с помощью команды
|
||
C-x C-b, всегда показывает вам точные имена всех буферов.
|
||
|
||
ЛЮБОЙ текст, который вы видите в окне Emacs, всегда является частью
|
||
какого-либо буфера. Некоторые буфера не соответствуют файлам. Например,
|
||
буфер с именем "*Buffer List*" не связан ни с каким файлом. Этот буфер
|
||
создается коммандой C-x C-b и содержит список всех буферов. Буфер по имени
|
||
"*Messages*" также не связан ни с каким файлом; он содержит сообщения,
|
||
которые отображаются в самой нижней строке окна Emacs в течение
|
||
текущего сеанса работы с редактором.
|
||
|
||
>> Наберите C-x b *Messages* <Return> для просмотра содержимого буфера
|
||
сообщений. Затем наберите C-x b TUTORIAL.ru <Return> для возврата в
|
||
данный учебник.
|
||
|
||
Если вы изменяете текст одного файла, а затем открываете другой, то текст в
|
||
первом буфере остается не сохраненным. Изменения останутся внутри 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 Расширение с помощью ввода префикса. За ним следует один символ.
|
||
M-x Расширение набора команд с помощью их наименования. За ним
|
||
следует имя команды.
|
||
|
||
Это полезные команды, но они используются менее часто, чем те команды,
|
||
которые мы уже изучили. Вы уже видели некоторые из расширенных комманд:
|
||
команды работы с файлами C-x C-f -- открыть файл, и C-x C-s -- сохранить
|
||
файл. Другой пример -- команда завершения работы с Emacs'ом -- C-x C-c.
|
||
(Не волнуйтесь о том, что вы потеряете сделанные изменения, C-x C-c
|
||
предлагает сохранить изменения перед выходом из Emacs'а.)
|
||
|
||
Если вы работаете на графическом дисплее, который способен показывать
|
||
несколько программ одновременно, вы можете переключится от Emacs'а к другой
|
||
программе используя мышку или соответствующее команды установленного у вас
|
||
менеджера окон. Но когда вы работаете на текстовом терминале, который
|
||
способен отобразить только одну программу, то для переключения к другой
|
||
программе вам понадобится "приостановить" Emacs.
|
||
|
||
C-z -- это команда *временного* выхода из Emacs. Вы можете вернуться в ту же
|
||
сессию Emacs позже. Когда Emacs запускается на текстовом терминале, команда
|
||
C-z "приостанавливает" ("suspends") Emacs, т.е. она возвращает вас в командный
|
||
процессор (shell), но не закрывают Emacs. В большинстве командных процессоров
|
||
вы можете вернуться в Emacs, используя команду `fg', `%emacs' или `exit'.
|
||
|
||
Чтобы покинуть Emacs используйте команду C-x C-c. Обычно это нужно тогда,
|
||
когда вы хотите закончить сеанс работы с компьютером. Это сочетание также
|
||
используется, чтобы выйти из Emacs, вызванного из почтовой программы или
|
||
другой утилиты, которая может не знать, как справиться с приостановленным
|
||
Emacs. Обычно, если вы не собираетесь выходить из системы, то лучше
|
||
приостановить Emacs, используя C-z, вместо того, чтобы покидать его совсем.
|
||
|
||
Существует очень много команд, использующих префикс C-x. Вы уже изучили
|
||
следующие команды:
|
||
|
||
C-x C-f Открыть файл
|
||
C-x C-s Сохранить файл
|
||
C-x s Сохранить некоторые файлы
|
||
C-x C-b Список буферов
|
||
C-x 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>файл<Return>файлы<Return>.
|
||
|
||
Заметьте, как эта строчка изменится: вы замените слово ф-а-й-л
|
||
словом "файлы" везде, где оно встретится, ниже позиции курсора.
|
||
|
||
|
||
* АВТОМАТИЧЕСКОЕ СОХРАНЕНИЕ
|
||
---------------------------
|
||
|
||
Когда вы изменяете файл, но не сохраняете его, то в случае зависания системы
|
||
вы можете потерять информацию. Чтобы защитить вас от этого, Emacs периодически
|
||
сохраняет каждый файл, который вы редактируете. Автоматическое сохранение
|
||
происходит в файл, имя получается из имени редактируемого файла добавлением
|
||
символа "#" в начале и в конце; например, если ваш файл называется "hello.c",
|
||
то автоматически сохраненный файл будет называться "#hello.c#". Когда вы
|
||
сохраните файл обычным способом, Emacs удаляет автоматически сохраненный файл.
|
||
|
||
Если система зависла, то вы можете восстановить ваши изменения, которые были
|
||
сохранены автоматически, путем открытия нужного файла (файла, который вы
|
||
редактировали, но не сохранили), и затем набрав M-x recover-file<Return>.
|
||
Когда у вас запросят подтверждение, наберите yes<Return>, чтобы
|
||
восстановить автоматически сохраненные данные.
|
||
|
||
|
||
* ОБЛАСТЬ ЭХА (ECHO AREA)
|
||
-------------------------
|
||
|
||
Если Emacs видит, что вы медленно набираете команды из нескольких символов,
|
||
то он показывает их вам внизу экрана, в области называемой "область эха".
|
||
Область эха -- это самая нижняя строка окна Emacs.
|
||
|
||
|
||
* СТРОКА СОСТОЯНИЯ
|
||
------------------
|
||
|
||
Строка сразу над областью эха называется "строкой состояния". Выглядит эта
|
||
строка примерно так:
|
||
|
||
--:** TUTORIAL.ru 63% L749 (Fundamental)-----------------------
|
||
|
||
Эта строка сообщает полезную информацию о состоянии Emacs и текста, который
|
||
вы редактируете.
|
||
|
||
Вы уже знаете, что означает имя файла -- это файл, который вы открыли. NN%
|
||
показывает вашу текущую позицию в тексте; это означает что NN процентов
|
||
текста находятся выше начала окна. Если показано начало текста, вы увидите
|
||
"Top" вместо "0%". Если показан конец текста, то будет отображено "Bot".
|
||
Если текст настолько мал, что показан весь, то строка состояния сообщит
|
||
"All".
|
||
|
||
Буква L и цифры показывают позицию другим способом -- они показывают номер
|
||
строки в которой находится курсор.
|
||
|
||
Звездочки в начале строки означают, что вы изменяли текст. При открытии или
|
||
сохранении файла эта часть строки будет содержать не звездочки, а тире.
|
||
|
||
Часть строки состояния внутри скобок сообщает вам о режиме редактирования,
|
||
который вы сейчас используете. Стандартный, или базовый, режим -- Fundamental,
|
||
он используется и в данном учебнике. Это пример "основного режима" ("major
|
||
mode").
|
||
|
||
Emacs имеет много различных основных режимов. Некоторые из режимов
|
||
используются для редактирования текста на различных языках и/или различных
|
||
видов текста, такие как Lisp-режим, Text-режим и пр. В каждый момент
|
||
времени действует только один основной режим, и его название вы можете найти
|
||
в скобках -- там, где сейчас находится слово "Fundamental" (базовый).
|
||
|
||
Каждый основной режим заставляет некоторые команды вести себя немного
|
||
по-другому. Например, это команды создания комментариев в программе, и
|
||
поскольку в каждом языке программирования комментарии записываются
|
||
по-своему, то и каждый основной режим вставляет их по-разному. Каждый
|
||
основной режим имеет именованную команду, которая включает его. Например,
|
||
M-x fundamental-mode -- это команда, которая включает базовый (Fundamental)
|
||
режим.
|
||
|
||
Если вы редактируете текст на естественном языке, например, как этот файл,
|
||
то вы, вероятно должны переключиться в режим 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 снова, чтобы найти следующее вхождение слова "курсор".
|
||
>> Теперь нажмите <Delback> четыре раза и проследите за перемещениями курсора.
|
||
>> Нажмите <Return> для завершения поиска.
|
||
|
||
Вы заметили, что происходило? 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, чтобы узнать о том, как
|
||
бороться с этой "особенностью".
|
||
|
||
Если вы во время инкрементального поиска нажмете <Delback>, то вы заметите,
|
||
что последний символ в искомой строке удалился, и поиск вернулся к
|
||
предыдущему найденному месту. Например, предположим, что вы набрали "к",
|
||
поиск перейдет к первому вхождению символа "к". Теперь, если вы наберете
|
||
"у", курсор перейдет к первому вхождению "ку". Нажатие <Delback> удалит
|
||
символ "у" из строки поиска, и курсор вернется к первому вхождению "к".
|
||
|
||
Если вы во время поиска введете control- или meta- символ (за некоторыми
|
||
исключениями, например, такими, как символы C-s и C-r, которые начинают
|
||
поиск), то поиск прекратится.
|
||
|
||
C-s начинает поиск и ищет любые вхождения искомой строки ПОСЛЕ текущей
|
||
позиции курсора. Если вы хотите найти что-то ранее в тексте, то нажмите
|
||
C-r. Все, что мы говорили о C-s, применимо и к C-r, только 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 используется для отмены команд и
|
||
аргументов ВНУТРИ рекурсивных уровней редактирования.
|
||
|
||
|
||
* КАК ПОЛУЧИТЬ ДОПОЛНИТЕЛЬНУЮ ПОМОЩЬ
|
||
------------------------------------
|
||
|
||
В этом учебнике мы попытались снабдить вас только той информацией, которая
|
||
поможет вам начать пользоваться 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-x 1.
|
||
|
||
Есть еще несколько полезных функций, доступных через C-h:
|
||
|
||
C-h f Описывает функцию. Вам необходимо набрать имя функции.
|
||
|
||
>> Попробуйте набрать C-h f previous-line<Return>.
|
||
Это отобразит информацию Emacs о функции, которая выполняется командой
|
||
C-p.
|
||
|
||
Аналогичная команда C-h v отображает документацию о переменных, значение
|
||
которых вы можете изменить для настройки поведения Emacs. Вам нужно набрать
|
||
имя переменной, когда Emacs запросит его.
|
||
|
||
C-h a (Apropos Command). Введите ключевое слово и Emacs покажет вам
|
||
список всех команд и функций, имена которых содержат это слово.
|
||
Для команд, которые могут быть вызваны через Meta-x, Emacs
|
||
покажет слово "Command" слева от их описания, а также символы,
|
||
которые эти команды вызывают.
|
||
|
||
>> Наберите C-h a file<Return>.
|
||
|
||
Это отобразит в другом окне список всех команд M-x, у которых в именах
|
||
содержится слово "file". Также в списке кроме таких команд, как find-file,
|
||
вы увидите соответствующие символьные команды, такие как C-x C-f.
|
||
|
||
>> Наберите C-M-v для прокрутки окна справки. Выполните это несколько раз.
|
||
|
||
>> Наберите C-x 1 для удаления окна справки.
|
||
|
||
C-h i Читать интерактивные руководства (команда Info). Эта команда
|
||
переходит в специальный буфер с именем `*info*', где вы можете
|
||
читать интерактивные руководства для пакетов, установленных в вашей
|
||
системе. Наберите m emacs <Return> для чтения руководства по
|
||
Emacs. Если вы никогда ранее не использовали Info, то наберите ? и
|
||
Emacs откроет учебник по возможностям режима Info. Однажды
|
||
ознакомившись с этим учебником, вы должны использовать руководство
|
||
Emacs Info в качестве основной документации.
|
||
|
||
|
||
* ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ
|
||
----------------------------
|
||
|
||
Вы можете узнать больше об Emacs'е, читая его руководство, книги или
|
||
интерактивный справочник (используйте меню Help или наберите F10 h r). Вам
|
||
особенно понравятся две функции -- завершение, которое сокращает количество
|
||
нажимаемых клавиш, и dired, который облегчает работу с файлами.
|
||
|
||
Завершение используется для того, чтобы избежать набора лишних символов.
|
||
Например, если вы хотите переключиться в буфер *Messages*, то вы можете
|
||
набрать C-x b *M<Tab> и Emacs заполнит остаток имени буфера, поскольку он
|
||
может определить его из того, что вы уже набрали. Завершения описаны в
|
||
Info-версии руководства по Emacs в разделе "Completion".
|
||
|
||
Dired позволяет вам отображать список файлов в каталоге (а также
|
||
подкаталогах, в зависимости от настройки), перемещаться по списку файлов,
|
||
открывать их, переименовывать, удалять и выполнять прочие действия над
|
||
файлами. Dired описан в Info-версии руководства по Emacs в разделе "Dired".
|
||
|
||
В руководстве также описаны прочие возможности Emacs.
|
||
|
||
|
||
* ЗАКЛЮЧЕНИЕ
|
||
------------
|
||
|
||
Запомните, что для того, чтобы совсем выйти из Emacs, используется сочетание
|
||
клавиш C-x C-c. А чтобы временно выйти в оболочку (shell) и потом вернуться
|
||
обратно, используйте C-z.
|
||
|
||
Этот учебник должен быть понятен всем новым пользователям, но если вы
|
||
найдете что-нибудь неясное, не нужно сидеть и порицать себя -- жалуйтесь!
|
||
|
||
|
||
* УСЛОВИЯ РАСПРОСТРАНЕНИЯ
|
||
-------------------------
|
||
|
||
Этот учебник произошел из длинной серии учебников Emacs, начатой с однажды
|
||
написанного Stuart Cracraft для оригинального Emacs'а.
|
||
|
||
Эта версия учебника, как и GNU Emacs, защищена правами копирования
|
||
(copyrighted) и приходит с ограничениями распространения копий со
|
||
следующими соглашениями:
|
||
|
||
Copyright (C) 1985, 1996, 1998, 2001-2012 Free Software Foundation, Inc.
|
||
|
||
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 вашим
|
||
друзьям. Помогите уничтожить обструкционизм в области программного
|
||
обеспечения ("владение"), используя, создавая и распространяя свободное
|
||
программное обеспечение!
|
||
|
||
// жду замечаний и исправления ошибок по адресу alexott@gmail.com.
|
||
// Alex Ott.
|
||
|
||
;;; Local Variables:
|
||
;;; coding: cyrillic-koi8
|
||
;;; sentence-end-double-space: nil
|
||
;;; End:
|
||
|