Пользователи системы



страница27/42
Дата01.12.2017
Размер5.38 Mb.
#654
ТипПрограмма
1   ...   23   24   25   26   27   28   29   30   ...   42

Лучше, чем Emacs?


Заголовок этого раздела сформулирован таким провокационным образом не случайно: любому пользователю похожей на UNIX операционной системы (к таким системам относится и Linux) необходим текстовый редактор. Выбор очень многих пользователей падает на один из двух наиболее популярных и, как следствие, наиболее универсальных (реализованных и работающих везде) текстовых редактора: Vi (или одну из его версий, чаще всего Vim) и Emacs. Оба эти редактора появились около тридцати лет назад, но почтенный возраст им на пользу: огромное количество по всему миру разработчиков все эти годы занималось их отладкой, локализацией и расширением.

Vim и Emacs образуют альтернативную пару не только по исторической случайности: оба редактора претендуют на роль универсального средства для работы с текстом на любых естественных и искусственных языках. И действительно, трудно назвать сравнимый с ними по возможностямтекстовый редактор, да еще и настолько нетребовательный к интерфейсу: и Vim, и Emacs будут работать на любом терминале. Однако ограниченные возможности интерфейса терминала требуют от программ надежного способа отделения команд редактора от вводимого текста. В Vi и Emacs эта задача решена по-разному – отсюда и большая часть различий в стиле работы с этими редакторами, и традиционный спор приверженцев этих редакторов о том, какой из них лучше.


Тексты на разных языках


Главное свойство, которое сделало Emacs таким популярным и многофункциональным редактором – это заложенная в нем с самого начала принципиальная расширяемость. Emacs почти полностью написан на специально созданном для него языке программирования Emacs Lisp, и у любого пользователя есть возможность запрограммировать необходимые именно ему функции и подключить их в качестве модуля к Emacs. При этом сам Emacs никак изменять не требуется. Сообщество программистов не замедлило воспользоваться расширяемостью Emacs, и к настоящему времени важнейшее достоинство этого редактора состоит именно в свободно распространяемых пакетах расширений, содержащих инструменты для решения самых разнообразных задач, связанных с редактированием текста.

Современный Emacs – это не просто текстовый редактор, а интегрированная среда для работы в системе. Основная идея сообщества разработчиков и пользователей Emacs состоит в том, что Emacs позволяет работать с любыми данными, которые могут быть представлены как текст (в лекции 7 обсуждалось, что таким образом можно представить очень многое в системе). Естественно, список содержащихся в каталоге файлов, программа на каком-либо языке программирования или электронное письмо – это тексты, которые сильно различаются по структуре и по тому, что от них нужно пользователю. В Emacs для работы с текстами разного типа используются режимы.1)



Режим Emacs. Комплекс команд и настроек Emacs, предназначенных для работы с текстом определенной структуры, например содержимым каталога, программой на Си и. т. п.

Каждый буфер в Emacs находится в одном из основных режимовОсновной режим – это набор функций и настроек Emacs, приспособленных для редактирования текста определенного вида. Каждый основной режим по-своему переопределяет некоторые управляющие символы, так что наиболее доступными становятся команды, чаще всего именно для работы с текстом данного типа. Команды, специфичные для текущего основного режима, обычно начинаются с управляющего символа C-c. Некоторое представление о возможностях Emacs может дать весьма неполный список тех текстов, для которых существуют основные режимы:



  • список файлов в каталоге;

  • программы на самых разных языках программирования, от Си до самых экзотических;

  • тексты в различных форматах разметки: XML, HTML, TeX;

  • словари;

  • электронная почта (режим позволяет не только читать и писать письма, но и отправлять и получать их);

  • календарь;

  • дневник и личное расписание;

  • многое другое.

Когда требуется много и быстро работать с текстом на каком-либо искусственном языке (языке программирования,разметки и пр.), возможно, Emacs – это лучший выбор.

Не хуже в Emacs развиты и средства работы с текстами на разных естественных языках с самыми экзотическими письменностями. Просто для оценки возможностей Emacs в этой области можно выполнить команду "C-h h", по которой будет выведен файл, изображающий приветствие на разных языках.


Команды Emacs


Если в вашей системе установлен Emacs, то вы можете его запустить, набрав emacs в командной строке любого терминала. Как и Vim, Emacs использует весь экран терминала, хотя интерфейс у него более богатый: вверху экрана находится строка с пунктами меню, под ней – окно для отображения и редактирования текста, которое заканчивается строкой режима, отображаются сведения о происходящем в окне. В самом низу экрана – строкаминибуфера, используемая для диалога с пользователем, в частности для отображения и редактирования вводимых команд.

Vi и вслед за ним Vim – это многорежимные редакторы, когда команды вводятся в одном режиме, а текст – в другом, что позволяет использовать в качестве командных любые клавиши. В Emacs нет специального командного режима, но использован тот факт, что с клавиатуры можно вводить не только печатные, но и некоторыеуправляющие символы. Для этого используются несколько управляющих клавиш терминала (прежде всего Ctrl иAlt), нажатые в сочетании с различными текстовыми символами. Чтобы ввести такой символ, нужно нажать управляющую клавишу (например, Ctrl) и, удерживая ее, нажать клавишу с одним из печатных символов (например, "x"). Кроме того, в Emacs используется управляющая клавиша Meta. На тех терминалах, где она отсутствует, ее функции обычно передаются клавише Alt. На "настоящих" терминалах обычно не бывает ни Meta, ни Alt; из клавиатурных модификаторов присутствуют только Ctrl и Shift. Тогда на помощь приходит старая добрая ESC: нажатие ESC, а после нее – печатного символа (того же "x") эквивалентно "Meta x".

Команд в редакторе Emacs чрезвычайно много, доступных управляющих символов на всех не хватает, поэтому чтобы вызвать команду Emacs, обычно требуется ввести ключ, начинающийся с управляющего символа, за которым следует комбинация из управляющих или обычных символов, просто полное имя команды.Последовательность символов, достаточная для вызова команды, называется законченным ключом, а если введенных символов недостаточно для однозначного определения команды, это – префиксный ключ.

Общее правило здесь таково: чем чаще команда, тем короче вызывающий ее ключ, и наоборот. Для лаконичной записи длинных клавиатурных комбинаций в сообществе пользователей Emacs сложилась особая традиция сокращенных обозначений. Клавишу Ctrl обозначают заглавной буквой "C", Meta – "M"2). Сочетания с командной клавишей обозначаются дефисом, например, запись С-h обозначает, что нужно, удерживая Ctrl, нажать "h". C-h – это префиксный ключ для команд справочной системы Emacs. Начинающему пользователю стоит выполнить команды "C-h ?" (набрать C-h и затем нажать "?") – справка по командам помощи, "C-h t" – интерактивный учебник для начинающих пользователей Emacs, и "C-h i" – полное руководство по Emacs (в формате info). С ключа C-x начинаются основные команды Emacs, в частности, для работы с файлами и буферами. Чтобы завершить работу Emacs, нужно ввести "C-x C-c".

У любой команды Emacs есть собственное имя. По этому имени можно вызвать команду, даже если она не привязана ни к какому клавиатурному ключу. Для вызова команд по имени используется префиксный ключ M-x. Например, посмотреть справку о помощи в Emacs можно командой "M-x help-for-help".

Работа с файлами


В Emacs, как и в Vim, пользователь редактирует текст не в самом файле, а вбуфере. Отличие Emacs в том, что нельзя написать "безымянный" текст и затем сохранить его в файле. При запуске Emacs без параметров открывается специальный буфер – "*scratch*". Он предназначен для временных заметок – его содержимое будет выброшено при закрытии Emacs. Если нужно создать новый файл – его следует открыть командой "C-x C-f", точно так же открывается для редактирования уже существующий файл.

После того как Мефодий нажал "C-x C-f", в минибуфере возникло приглашение: "Find file: ~/". Теперь нужно ввести путь к файлу, начиная с текущего каталога (Emacs любезно подсказал его Мефодию). С текстом вминибуфере можно обращаться почти так же, как с командной строкой shell или Vim: редактировать, использовать автодополнение (клавишей Tab), перемещаться по истории стрелочками вверх/вниз. Мефодий не замедлил воспользоваться этой возможностью и, набрав "te", нажав Tab и Enter, приступил к редактированию того же "textfile". Сохранить сделанные изменения можно командой "C-x C-s".

Когда Мефодий захотел открыть еще один буфер, чтобы выполнить один из своих сценариев, он забыл точное название нужного файла и, набрав "C-x C-f bin/", нажал Enter. В окне возник список файлов в подкаталоге "~/bin", похожий на вывод ls -l:

File Edit Options Buffers Tools Operate Mark Regexp Immediate Subdir Help

/home/methody/bin:

итого 24


drwxr-xr-x 2 methody methody 4096 Дек 2 15:21 .

drwx------ 10 methody methody 4096 Дек 2 15:21 ..

-rwxr-xr-x 1 methody methody 26 Ноя 9 21:34 loop

-rwxr-xr-x 1 methody methody 23 Ноя 9 21:34 script

-rwxr-xr-x 1 methody methody 32 Ноя 9 21:34 to.sort

-rwxr-xr-x 1 methody methody 44 Ноя 9 21:34 two

-RRR:%%-F1 bin (Dired by name)--L5--C51--All--Reading directory /home/methody/bin/...done

Пример 9.9. Emacs. Режим dired (html, txt)

Как указано в строке режима, это Dired, редактор каталогов, режим Emacs, предназначенный для просмотра и изменения каталогов прямо из редактора. В Dired можно выбирать отдельные файлы или группы файлов и производить над ними различные действия: открыть для редактирования, удалить, скопировать, переместить, переименовать по определенной схеме и т. д. Одним словом, Dired – довольно мощное средство для наглядной работы с файловой системой, особенно он удобен для работы с группой файлов. Подробности о командах, доступных в этом режиме, можно найти в руководстве по Emacs.


Перемещение по тексту


В Emacs, как и в Vim, есть понятие "точка" – то место в буфере, где будет происходить вставка или удаление данных. Перемещение по тексту – это перемещение точки. Команды перемещения по структурным элементам текста развиты не менее, чем в Vim – помимо обычных стрелок, действуют команды перемещения в начало и конец строки (C-a и C-e), буфера (M-< и M->), предложения (M-a и M-e), к предыдущему и следующему слову (M-f и M-b), абзацу (M-{ и M-}). Различные основные режимы предоставляют специализированные команды для перемещения по структурным элементам текстов на разных языках программирования, разметки и др.

В Emacs несколько видов поиска: существуют отдельные команды для поиска строки и поиска по регулярному выражению. Если требуется найти ближайшее употребление конкретного слова, удобнее всего воспользоватьсянаращиваемым поиском по команде C-s. Наращиваемый поиск уже встречался Мефодию: так был устроен поиск по истории команд в bash. По мере набора первых символов искомой строки Emacs переносит точку к ближайшему подобному сочетанию символов после курсора. Поиск в обратном направлении (к началу буфера) осуществляется командой C-r. Наращиваемый поиск можно выполнять по регулярному выражению (C-M-s). Все видынаращиваемого поиска в Emacs не различают прописные и строчные буквы.


Изменение текста


В Emacs есть множество команд, позволяющих пользователю выполнять меньше действий при редактировании текста. Если пользователь осознает, что набрал что-то неправильно, он может разом удалить последнее слово (M-Del) или предложение (C-x Del). Можно уничтожать и вперед: до конца слова (M-d) и предложения (M-k). Emacs хранит не только последний удаленный фрагмент, но и все предыдущие, формируя список удалений. Только что уничтоженный текст можно вставить командой C-y. После этого его можно заменить предыдущим уничтоженным фрагментом – M-y. Можно двигаться и далее назад по списку удалений, повторяя M-y.

Хорошо продуманы команды для перестановки частей текста вокруг точки: двух знаков (C-t), слов (M-t), строк (C-x C-t). Команда M-t не перемещает знаки препинания между словами, поэтому "потеха, дело" превратится в "дело, потеха".

Прямо из Emacs можно вызвать программу проверки орфографии ("M-x ispell-buffer") или даже включить проверку "на лету", когда неправильно написанные слова выделяются другим цветом ("M-x flyspell-mode"). Можно проверить написание отдельного слова, в котором находится точка ("M-x $") или завершить недописанное слово, основываясь на орфографическом словаре ("M-x Tab").

В Emacs так много специальных команд для изменения текста, что команды поиска и замены бывают нужны не так часто. Произвести замену строки всюду в буфере можно по команде "M-x replace-string что заменить Enter на_что_заменить Enter", а для замены регулярного выражения существует аналогичная команда "M-x replace-regexp".

Если нужно заменить строку только в некоторых случаях, пригодится команда M-%, запрашивающая подтверждение о замене при каждой найденной строке. Аналогичная команда для регулярных выражений – C-M-%.

Любые изменения в тексте можно отменить командой C-_ (нужно нажать Ctrl, Shift и "-").


Работа с фрагментами текста


Многие команды Emacs работают с произвольным фрагментом текущего буфера. Такие команды всегда применяются к текущей областиОбласть – это отрезок текста между точкой (где находится курсор) и меткой.Метка в любой момент присутствует в любом буфере, пользователь может установить ее в любом месте текста явно – командой M-Пробел. Метка может перемещаться и без вмешательства пользователя: команды перемещения и редактирования могут изменять положение метки. Таким образом, чтобы выделить в буфере фрагмент текста, можно проделать следующие операции:

  • переместить точку (курсор) на один конец нужного фрагмента;

  • нажать M-Пробел (установить метку);

  • переместить точку к другому концу нужного фрагмента.

Теперь можно выполнять команду редактирования – она будет применена именно к выделенной области. Например,C-w удалит текст области, а M-w скопирует его. Вставить удаленный или скопированный фрагмент можно командойC-y.

Есть группа команд, позволяющих работать с меткой более эффективно: установить метку после конца следующего слова (M-@), пометить текущий абзац (M-h) или весь буфер ("C-x h"). Различные основные режимыпредоставляют команды для пометки структурных элементов текста, например, разделов документа, определения функции (в тексте программы) и т. п. Все положения метки хранятся в списке пометок, перенести точку в любое из предшествующих положений метки можно, нужное количество раз повторив команду "C-u C-@".



Область. Непрерывный отрезок текста, ограниченный точкой с одной стороны и меткой с другой.

Как и в Vim, в Emacs можно использовать для хранения информации регистры. В регистре Emacs можно сохранить позицию в буфере и затем перейти к этой позиции ("C-x r Пробел x" записывает позицию точки в регистр "x", а "C-x r j x" переходит в эту позицию). В регистре можно сохранить текст из области ("C-x r s x" сохраняетобласть в регистре "x", "C-x r i x" – вставляет текст из этого регистра). В регистрах также можно хранить числа, имена файлов, конфигурацию окон. Подробности, как всегда, в руководстве.


Настройка Emacs


Коротко говоря, в Emacs можно настроить все: связи между ключами и командами редактора, определить макрокоманды, написать собственные расширения. Есть возможность изменять настройки Emacs как в процессе работы, так и при помощи конфигурационного файла .emacsrc.



Поделитесь с Вашими друзьями:
1   ...   23   24   25   26   27   28   29   30   ...   42




База данных защищена авторским правом ©vossta.ru 2022
обратиться к администрации

    Главная страница