Emacs
Пред. | Глава 4. Редактирование текста: Emacs и VI | След.

Emacs

Emacs - это, вероятно, самый мощный текстовый редактор из всех существующих. Он может делать абсолютно все, и неограниченно расширяется, благодаря своему встроенному языку программирования на базе lisp. С помощью Emacs вы можете бродить по вебу, читать почту, принимать участие в группах новостей Usenet, готовить кофе и т.п. Это не значит, что из этой главы вы узнаете, как все это делается, однако вы получите хорошие начальные знания о том, как запустить Emacs, отредактировать один или несколько файлов, сохранить их и выйти из Emacs.

Если после прочтения этого, вы захотите более подробно изучить Emacs, вы можете заглянуть сюда Tutorial Introduction to GNU Emacs.

Краткое представление

Запускается Emacs следующим образом:

emacs [файл] [файл...]

Emacs откроет каждый файл, указанный в качестве аргумента, в отдельном буфере с одновременным отображением двух буферов максимум. Если вы запустите Emacs без указания каких-либо файлов в командной строке, вы окажетесь в буфере под названием *scratch*. Если вы находитесь в X, будут доступны меню, но в этой главе мы сконцентрируемся на работе непосредственно при помощи клавиатуры.

Начало работы

А теперь пора заняться практикой. Например, давайте начнем с открытия двух файлов: file1 и file2. Если эти файлы не существуют, они будут созданы после того, как вы что-нибудь запишите в них:

$ emacs file1 file2

После выполнения этой команды, будет показано следующее окно:

Рисунок 4.1. Редактирование двух файлов одновременно

Как видите, были созданы два буфера: по одному на каждый файл. Также в нижней части экрана (где вы видите (New file)) находится третий буфер. Это мини-буфер. Вы не можете получить к этому буферу прямой доступ. Вы должны быть приглашены Emacs'ом во время интерактивных операций. Для смены текущего буфера, введите Ctrl+x o. Вы можете набирать текст как в «обычном»редакторе, удаляя символы при помощи клавиш DEL или Backspace.

Для перемещения курсора вы можете использовать клавиши со стрелками, или вы можете воспользоваться следующими комбинациями клавиш: Ctrl+a для перехода в начало строки, Ctrl+e для перехода в конец строки, Alt+< для перехода в начало буфера и Alt+> для перехода в конец буфера. Существует много других комбинаций, даже комбинации для каждой из клавиш со стрелками [10].

Как только вы готовы сохранить свои изменения на диск, наберите Ctrl+x Ctrl+s, или, если вам нужно сохранить содержимое буфера в другой файл, наберите Ctrl+x Ctrl+w. Emacs спросит у вас имя файла, в который должно быть записано содержимое буфера. при этом вы можете воспользоваться завершением.

Обработка буферов

При необходимости вы можете оставить на экране только один буфер. Для этого есть два способа:

Если вы находитесь в буфере, который надо скрыть, наберите Ctrl+x 0

Если вы находитесь в буфере, который надо оставить на экране, наберите Ctrl+x 1.

Для восстановления буфера обратно на экран имеется два способа:

наберите Ctrl+x b и введите имя нужного вам буфера, или

наберите Ctrl+x Ctrl+b. При этом будет открыт новый буфер с именем *Buffer List* (список буферов). Вы можете перемещаться по этому буферу при помощи последовательности Ctrl+x o, затем выберите нужный вам буфер и нажмите клавишу Enter, или введите в мини-буфере имя нужного буфера. После того, как вы сделаете выбор, буфер *Buffer List* вернется в фоновый режим.

Если вы закончили работу с файлом и хотите избавиться от связанного с ним буфера, наберите Ctrl+x k. После этого Emacs спросит у вас, какой из буферов он должен закрыть. По умолчанию это будет буфер, в котором вы в данный момент находитесь. Если вы хотите избавиться от другого буфера, введите его имя или нажмите TAB: Emacs откроет еще один буфер с именем *Completions* (завершения), предлагая список возможных вариантов. Подтвердите выбор клавишей Enter.

Вы также в любое время можете восстановить на экран два видимых буфера. Для этого наберите Ctrl+x 2. По умолчанию, новый созданный буфер будет копией текущего буфера (который, например, позволяет вам редактировать большой файл в разных местах «одновременно»). Для перемещения между буферами используйте описанные выше команды.

Вы в любое время можете открывать новые файлы при помощи Ctrl+x Ctrl+f. Emacs спросит у вас имя файла, и вы вновь можете воспользоваться автозавершением, если найдете это более удобным.

Копирование, вырезание, вставка, поиск

Допустим, что вы находитесь в следующей ситуации Рисунок 4.2, «Emacs, перед копированием текстового блока».

Рисунок 4.2. Emacs, перед копированием текстового блока

Сначала вам нужно выделить блок, который вы хотите скопировать. В этом примере мы хотим скопировать целое предложение. Первым шагом будет установка курсора в начало копируемой области. При условии, что курсор находится в той же позиции, что и на Рисунок 4.2, «Emacs, перед копированием текстового блока», последовательность команд будет следующей: Ctrl+ SPACE (Control + клавиша пробел). Emacs выведет в мини-буфере сообщение Mark set (Метка установлена). Затем перейдите в начало строки, нажав Ctrl+a. Область, выделенная для копирования или вырезания - это вся область между отметкой и текущим положением курсора, следовательно, данном случае это будет целая строка текста. Доступны две последовательности команд: Alt+w (для копирования) или Ctrl+w (для вырезания). Если вы выполняете копирование, Emacs сразу вернет курсор на позицию отметки, чтобы вы могли видеть выделенную область.

И в завершение перейдите в буфер, в который вы хотите скопировать текст, и нажмите Ctrl+y. При этом вы получите следующий результат:

Рисунок 4.3. Копирование текста в emacs

В действительности то, что вы сейчас сделали, называется копированием текста в kill ring. Этот kill ring содержит все области, скопированные или вырезанные с момента запуска Emacs. Любая только что скопированная или вырезанная область помещается в начало kill ring. Последовательность Ctrl+y только «вставляет» область в начало. Если вы хотите получить доступ к любой другой области, нажмите Ctrl+y, затем нажимайте Alt+y до тех пор, пока не получите нужный текст.

Для поиска текста перейдите в нужный буфер и нажмите Ctrl+s. Emacs спросит, какую строку необходимо найти. Для продолжения поиска в текущем буфере этой строки просто жмите опять Ctrl+s. Когда Emacs достигнет конца буфера и не найдет больше совпадений, вы можете нажать Ctrl+s еще раз, чтобы повторно начать поиск от начала буфера. Нажатие на Enter заканчивает поиск.

Для поиска и замены нажмите Alt+%. Emacs спросит, какую строку надо найти, на что её заменить, и будет запрашивать подтверждение для каждого найденного совпадения.

Для отмены действия предыдущей операции нажмите Ctrl+x u. Вы можете вернуться назад на любое количество операций.

Выход из emacs

Комбинация клавиш для этого - Ctrl+x Ctrl+c. Если вы не сохранили сделанные изменения, Emacs спросит у вас, хотите ли вы сохранить буферы или нет.

[10] Emacs был разработан для работы на самых разнообразных машинах, некоторые из которых оснащены клавиатурами без клавиш со стрелками. Это еще более справедливо для Vi.

Пред. | Уровень выше | След.
Глава 4. Редактирование текста: Emacs и VI | Начало | Vi: предок