Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта 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, перед копированием текстового блока

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

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

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

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

Копирование текста в 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: предок