Библиотека сайта rus-linux.net
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: предок |