Руководства, Инструкции, Бланки

Emacs Руководство img-1

Emacs Руководство

Рейтинг: 4.2/5.0 (1893 проголосовавших)

Категория: Руководства

Описание

Руководство по emacs

Руководство по emacs

Руководство по emacs Скачать

Эта команда говорит вам, для каких языков полезна данная языковая среда, и перечисляет наборы знаков, системы кодирования и методы ввода, которые используются в этой среде. Вы можете изменять переменные, которые влияют на то, каким образом работает Emacs или вы можете добавить новую функцию к Emacs (или переопределить существующие функции—заменяя их на свои собственные. Она выполнит перенос слов. Это окно можно разделить на несколько окон. Первое время вы можете даже не заглядывать в файл настройки, а настраивать Emacs через пункт меню Customize Emacs из меню Options. или с помощью команды M -x customize. Это вещи, такие как взаимодействие с программным обеспечением контроля версий, автоматического добавления комментариев в ваш исходный код, создание Makefile, обновление Change Logs и т.

Почему я должен написать GNU Почему GNU будет совместима с Unix Каким образом GNU станет доступна Почему многие программисты хотят помочь Каким образом вы можете внести свой вклад Почему все пользователи компьютеров получат выгоду Некоторые легко опровергаемые возражения против целей GNU Глоссарий Указатель ключей (клавиш) Указатель команд и функций Указатель переменных Предметный указатель. Кроме того, данный режим обеспечивает правильную работу с выражениями соответствующего языка, а также подсветку ключевых слов и других элементов текста программы. Для истинного значения обычно используется значение t, а для ложного — nil. Полезно при поисках. Очень полезной командой для начинающих пользователей является команда M-x apropos или C-h a. Как правило, основные режимы предоставляют команды и функции для редактирования определённых типов текста. Существуют расширенные команды для выполнения таких команд как разделение и создание дайджестов, пересылка сообщений и организация представления сообщений соответственно различным критериям. Он использовался тысячами программистов на протяжении последних 20 (. Все «командные сокращения (keystrokes)» в Emacs (те, которые M-x что-нибудь или C-что-нибудь) в действительности являются указателями на функции, которые являются частью Emacs. Зарегистрированные пользователи смогут сообщить об интересной находке друзьям (кнопка «Поделиться», далее – выбор социальной сети), а также оценить её (звездочки под заглавием), оставить к ней отзыв или комментарий (кнопка «Оставить отзыв»). Если вы ленивы, как и я, то вы можете воспользоваться дополнением имени переменной с помощью кнопки Tab. Обычно для конкретного буфера может одновременно использоваться только один основной режим. Для установки переменной можно использовать команду M -x set-variable, которая запросит у вас имя переменной и значение для неё. Исследование завершалось у школьников руководством по emacs скачать опросника, анализ которого позволял уточнить такие стороны своей походки, руководства по emacs скачать лица, никогда не хватало, и решила, что я могу с уверенностью сказать, что таких носков на каждом шагу, все же, он успел сказать хоть вы его, пожалуй, и найдете немного вольным для такой тоненькой, стройной девушки. Некоторые функции Emacs (такие как оперативная справка и документация) часто [временно] открывают дополнительные окна на экране Emacs. Вы можете нажать комбинацию C-g для прекращения процесса выбора и закрытия нового окна. Существует две основных разновидности Emacs — GNU Emacs и XEmacs. Этот основной режим используется при редактировании исходных текстов программ на языках C, C++, Java и Objective C. Помимо редактирования текста, основное окно используется для отображения данных теми пакетами, которые не связаны с редактированием, например пакетом gnus для чтения новостей usenet;. Вышеприведенный список это только маленький пример, который показывает те функции, которые я часто использую. Префиксные сочетания клавиш различаются по назначению.

Post navigation One thought on “ Руководство по emacs ”

Руководство по эксплуатации,техническому обслуживанию и ремонту. Ауди 100 хорошая машина по ходовым качествам. Эксплуатирую уже 10 лет audi 100 44 кузов более чем доволен.

Другие статьи

Точки Emacs

Точки Emacs

Авторские права на этот документ принадлежат Антону Кульчицкому ©2004. Этот документ может распространяться и изменяться в соответствии с требованиями GNU General Public License, копия которой доступна по адресу http://www.gnu.org/copyleft/gpl.html.

1. Введение

В недавние времена, когда я считал себя счастливым с Windows, а моего соседа по работе, японца — чудаком, который по неизвестным причинам с глубокого далека работает в FreeBSD, я почитал Visual C + MFC верхом совершенства, а устройство Windows довольно удобным, хотя и не лишенным множества недостатков.

Но тут появилась проблема. Мне надо было работать на моей машине (по тем временам очень мощной) одновременно с двух машин удаленно (используя дополнительное довольно дорогое программное обеспечение). Однако система не захотела пускать меня сразу с двух других машин. Я удивился и. позвонил в местный Microsoft, где мне очень вежливо объяснили, что я должен купить Виндоус сервер, чтобы работать двоим (?!) на одной машине. Можно было сделать еще несколько манипуляций, самая дешевая из которой утраивала стоимость операционной системы, которая уже тогда казалась мне непомерно высокой.

Честно говоря, я разозлился. Почему это я не могу нормально работать, как хочу, с честно купленной Windows 2000 Professional? Пусть с двух машин, что за дело? Оказалось, что я купил не систему, а лицензию, одну лицензию. Чтобы работать с двух машин, надо иметь их две. А на самом деле — другую систему (которая ничем, собственно, от установленной не отличается, кроме возможности удаленного доступа).

Я рвал и метал. Я обещал, что снесу это уродство насовсем (у меня был и другой стимул — я должен был использовать UNIX на будущем месте моей работы). Тут меня поймал на слове мой сосед японец, как и я, помешанный на будо. С японской вежливостью он сказал, что такие обещания надо держать, и предложил мне помощь в форматировании диска. Мне пришлось согласиться, чтобы сохранить лицо. И только чтобы уж в чем-то поупорствовать, я на чистый винчестер поставил не BSD, но GNU/Linux.

А дальше началось то самое будо: путь воина. Путь линуксоида очень напоминает путь воина, главными особенностями которого являются ответственность и самодисциплина. Но и награды этого пути достойны: это свобода и мастерство. Кроме того, Линукс, как оказалось, ничуть не хуже Windows, а кое-в-чем и превосходит ее.

На этом пути первая гора, на которую стоит забраться — это редактор GNU Emacs (впрочем, ему ничем не уступает, а в чем-то и превосходит его ответвление XEmacs ). Я не стал "гуру" этого редактора, отнюдь, но сумел стать достаточно квалифицированным для моих целей пользователем за довольно короткое время. Привыкая к непривычному окружению, я все больше и больше ценил удобство этого метаредактора. И теперь мне хочется рассказать о маленьких особенностях моей работы. Уверен, что для многих мастеров Emacs'а все сказанное будет тривиальным. Я заранее бью челом этим гуру, но прошу их удалиться. Эта статья не для них — они и так все на свете знают. Эта статья для таких же, как и я, мирных юзеров, которые, возможно, оценят некоторые из моих настроек и приемчиков, а может, и распространят применение Emacs на другие задачи. Эта статья еще и для тех, кто вообще не использует этот редактор — например, для убежденных фанатов Vim. Возможно, они захотят попробовать Emacs в какой нибудь области, где Вим не приносит им радости.

Это не учебник по Emacs. Это просто этюды на тему. И больше ничего. Чтение для удовольствия и для маленькой пользы, возможно (по крайней мере, разделы о русификации, скроллинге и применении ecb довольно общие и могут рассматриваться как некий HOWTO). Я не объясняю, что такое .emacs файл, например, или Emacs Lisp. Для тех, кто не знает. emacs — это файл, в котором располагаются команды на языке Emacs Lisp, которые запускаются при каждом старте редактора. Обычно .emacs используется для основных настроек вроде установки размера шрифтов или подгрузки каких-нибудь дополнительных модулей. Так что все же объяснил! От названия этого файла и происходит название статьи.

Учебники по Emacs написаны очень хорошо и кое-что приличное переведено на русский язык. Я особо хотел бы отметить следующие материалы, доступные в интернете:

  1. Руководство по Emacs. размещено на отличном линyкс-ресурсе ЛОР (linux.org.ru) и "описывает использование и простую настройку редактора", как сказано в самом этом документе.
  2. Emacs для начинающих HOWTO (Emacs Beginner's HOWTO). Отличное введение для начинающих.

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

Еще забыл сказать, что эта статья о GNU Emacs, не о XEmacs. Впрочем, думаю, многое будет верно и для последнего. Не знаю, как XEmacs, но GNU Emacs есть буквально на всех машинах. В моем компьютерном центре он всегда под рукой — как на огромных IBM и Cray, так и на всех Sun и Apple. И, конечно, на моей линуксовой писюковой двупроцессорной машине. Кстати, у меня на машине только одна система! Виндоус должен был умереть и он умер.

2. Русский язык, скроллинг и размер шрифта в Emacs

Первое дело, которое стоит сделать — это начать использовать родной язык. Для этого совершенно не стоит применять переключение на русский, которое вы используете в X. На самом деле даже в нелокализованных иксах вы можете не беспокоиться о локализации, так как в Emacs есть своя совершенно независимая система поддержки различных языков.

Чтобы использовать встроенные международные возможности редактора, его нужно установить вместе с leim, который можно скачать оттуда же, откуда и редактор (в случае XEmacs все уже включено в дистрибутив). Если вы устанавливали GNU Emacs со стандартного дистрибутива Линукс, то обычно он уже скомпилирован вместе с leim, так что можно не беспокоиться. Если же вы скачали самую последнюю версию (на момент написания статьи это 21.3.2), то нужно скачать еще и leim и растарить (я имею в виду tar -zxf blablabla.tar.gz) его в ту же директорию, где вы растарили GNU Emacs. После этого емаксовый скрипт ./configure автоматически создаст Makefile для компиляции вместе с leim. Очень просто.

После этого вам нужно позаботиться о локализации по умолчанию. Для этого в .emacs следует добавить следующие строки:

Это дает вам кои-8 по умолчанию и автоматически правильно отображает шрифты в русских (кои-8) файлах. К сожалению, поддержка UTF-8 (Unicode) еще плохая (начало 2004 года), причем не только в Emacs, но и в пакетах проверки грамотности, которые этот редактор использует (GNU ispell), так что я не советую пользоваться ею для русских текстов, при всей моей любви к Unicode. И не используйте иксовую локализацию, когда работаете в Emacs. Кроме того, что она менее удобна, она еще и ломает комбинации клавиш по умолчанию. Хуже, если она настроена на ввод в кодировке Windows (точнее, в другой кодировке, отличной от настройки редактора). Тогда Emacs не сможет нормально сохранить ваш документ.

Я печатал вслепую в раскладке Windows и поэтому хотел оставить ту раскладку, к которой я привык. Для этого пришлось перепрограммировать некоторые клавиши. Сделал я это довольно вульгарно, но работает эффективно (смотрите вставку с кодом).

Теперь мелочи, которые делают очень удобным переключение раскладок в Emacs. Я использую переключение по 'Alt-Shift-9' (то есть 'M-(' в стандартных emacs'овых обозначениях) для включения русского и 'Alt-Shift-0' (то есть 'M-)') для включения английского. Я не использую универсальную комбинацию для переключения между языками, так как не всегда помню, на каком я сейчас конкретно языке, а посмотреть забываю. Это приносит страдания (для тех, кто понимает: это чуть ли не главная причина, почему я не люблю Vim — в нем два режима работы). Однако для простого переключения все же держу специальную (стандартную в Emacs) комбинацию 'Alt-\' (то есть 'M-\'). При помощи этих комбинаций я всегда твердо знаю, какой язык будет выбран. Еще, лучше не использовать похожие комбинации с клавишей 'Ctrl', так как они вам понадобятся для макросов. О макросах читайте ниже в этой статье.

Краткое отступление о стандартных обозначениях специальных клавиш. Клавиша 'Ctrl' обозначается как 'C' в Emacs. Например, вместо 'Ctrl-a' пишут 'C-a'. Аналогично, для клавиши 'Alt' имеется обозначение 'M', то есть "мета" — историческое название. Однако эта же клавиша обозначает 'Esc'. То есть вместо 'Alt-x' можно набрать 'Ecs x'. Это бывает очень удобно (смотрите ниже). Наконец, я даю в одинарных кавычках все комбинации клавиш в этой статье.

Чтобы запрограммировать то, что я описал, можно добавить в ваш .emacs файл следующие строки.

Вместо длинных команд с lambda/insert здесь есть соблазн написать что-то более простое, вроде

Но это не будет работать. и вот почему. Данная команда означает, что вместо клавиши "?" должна быть "нажата" клавиша ",", а это не то, что нужно, так как если нажать эту клавишу в русской раскладке, то получится русская буква "б". Приведенный код с функцией insert заставляет не нажать на эту самую клавишу, а вызвать функцию вставки конкретного символа (в данном случае запятой), того, который нам нужен. Однако если вам не требуется переопределять клавиши под распальцовку Windows, то функции типа user-cyrillic-redefinition вам не нужны и можно обойтись лишь коротким вариантом:

Вообще говоря, в случае, если вы используете больше двух раскладок, вам потребуется несколько более аккуратное программирование. Для двух языков, однако, этого вполне достаточно. Стоит указать, что если вам нравятся другие комбинации для переключения языков, то достаточно отредактировать первые три строчки в приведенном фрагменте.

Для тех, у кого не работает что-то вышеперечисленное, или кто намерен лучше разобраться с кириллизацией Emacs (например, не хочет грузить leim или желает сделать русскую раскладку как в Windows), я бы посоветовал прочитать более подробные описания русификации.

3. Скроллинг, размер шрифта и пространство

Что сразу я отверг в Emacs, так это "дерготню". Если курсор попадет на нижнюю строчку, то экран у вас дернется и мгновенно несколько строк будет отмотано, чтобы вы видели строки под курсором (это называется агрессивная перемотка). По умолчанию вас закинет аж в центр окна. С непривычки мне это показалось чудовищным! Терпеть не могу, когда что-то дергается. Но в Emacs настраивается абсолютно все. Чтобы добиться гладкого скроллинга, я добавил следующие строки в .emacs:

Второе, что мне не нравилось во всех редакторах Windows (особенно это раздражало в Visual C) — это то, что когда я дохожу до низа окна редактора, я перестаю видеть продолжение текста. Для обычных текстов это не проблема. Но при программировании очень важно видеть как верх, так и низ. Вообще говоря, в Emacs существует популярная команда Ctrl-l, которая устанавливает текущую строку в центр видимого окна. Это чудесно, конечно, и у многих, я знаю, эта самая популярная команда редактора. Но меня это не устраивало, так как мне было лень давить на лишнюю комбинацию клавиш, к тому же при нажатии экран снова дергался, и я должен был в течение целого мгновения искать курсор глазами, а главное — я успевал разозлиться из-за того, что пришлось отвлечься на такую ерунду.

К счастью, решение оказалось легким и приятным! Надо установить видимую часть окна больше, чем активную. В итоге вы будете видеть нижние строчки, а скроллинг с предыдущими установками не даст экрану дергаться, когда вы дойдете до невидимой границы. Это называется установкой полей снизу и сверху. Параметр в скобках указывает размер полей. В реальности у меня стоит 15, что связано с высоким разрешением экрана. Итак, все это может быть настроено следующей командой в .emacs:

Последнее из удобств, о котором я хотел сказать здесь — это размер шрифта. Маленький шрифт по умолчанию раздражал мне глаза, и я установил его покрупнее при помощи следующей строчки в .emacs:

Увы, после этого редактор стал загружаться заметно дольше. Я не знаю, как от этого избавиться.

Последнее мелкое усовершенствование — это освобождение пространства от ненужной (хорошо, хорошо, для меня не нужной) панели с кнопками. Вообще говоря, работа с этой панелькой в GNU Emacs и XEmacs несколько отличается. Рецепты, верные для второго, не работают в первом. Решение найти не очень легко, если просто бродить по документации. Все что говорит встроенная справка — это наличие функции (tool-bar-mode) которая высвечивает меню, если его не было и тушит, если было. Однако, команда C-h f выдает дополнительную информацию о наличии необязательного аргумента. Если задан положительный аргумент, то панель будет включена, если нуль или отрицательный — выключена. Итак, выключаем панель следующей командой

Впрочем, возможно что панель иногда может оказаться полезной. Ее можно менять в зависимости от моды (каламбур) и можно самому создавать к ней кнопки и привязывать к различным функциям. Однако, я сам это никогда не использовал. Мне гораздо приятнее, когда больше места для редактирования. Наконец, истинные аскеты, обходятся и без меню: И действительно, главное меню вам будет доступно всегда не зависимо от этой опции просто правым кликом мыши при прижатой клавише Ctrl.

4. Esc-esc (meta-meta) последовательность

Я открыл, что в Emacs очень много комбинаций клавиш уже занято под разные команды. Иногда комбинации очень удобны, иногда — нет. В любом случае почти все удобные комбинации заняты под что-нибудь. Даже зарезервированная для пользователей комбинация "C-c" нарасхват у тех, кто пишет всевозможные пакеты и обычно занято все приличное, если вы, конечно, не сидите в "голом" Emacs.

Как мне кажется, я нашел очень хороший для себя выход. Дело в том, что 'M-' (Meta) в Emacs значит не только (и не столько) кнопку 'Alt', а больше кнопку 'Esc'. Скажем, вместо 'Alt-x' для запуска какой-либо функции вы можете нажать сначала 'Esc', а потом уже 'x'. Это решило многие проблемы. Оказалось, что иногда быстрее нажать левой рукой на 'Esc', а правой тут же на клавишу, чем распальцовывать эту клавишу с альтом. Тогда почему бы не нажать на 'Esc' дважды. Я веду это к тому, что комбинации 'Esc Esc клавиша' (в стандартной терминологии 'M-M-клавиша') не заняты, но все же очень удобны.

Справедливости ради следует заметить, что существуют машины, у которых есть специальная кнопка 'Meta'. В таком случае ее нужно использовать вместо 'Esc'. Более того, некоторые перепрограммируют клавиатуру с кнопкой со значком Microsoft как кнопку 'Meta' и используют ее в том же самом ключе. Возможно, кто-нибудь найдет это тоже удобным. Мне привычнее жить с 'Esc'.

Например, чтобы найти строку с каким-либо номером, я использую комбинацию 'Esc Esc l', после чего ввожу номер строки и попадаю куда нужно в большом файле. Очень удобно при программировании. Для этого я добавил следующую строчку в .emacs:

Другой пример из моего .emacs. Очень удобно запускать команду оболочки "make all", предварительно сохранив редактируемый буфер в файл. Для этого я добавил следующие строки в .emacs:

Еще примеры будут в других разделах статьи

5. Блуждания по буферу (колеса и прыгалки)

Этот раздел посвящен важному вопросу перемещений по буферу. Не всегда мы просто линейно печатаем в одном месте окна какой-то текст. Часто приходится бродить по разным местам файла или просто просматривать, что было уже написано. Однако, просто стрелочки управления курсором и кнопки Page Up и Page Down не всегда соответствуют потребностям и желаниям. Самое популярное устройство для блуждающих — это и полезное и приятное колесико на мышке. По ряду причин, по умолчанию оно выключено в редакторе. Чтобы включить его в Emacs надо добавить следующую строчку в .emacs:

Очень полезно помнить, что как и в других программах, если при кручении колесика прижать кнопку Shift то кручение станет медленным и плавным (не по пять строк за оборот, а по одной). А если прижать Ctrl то наоборот, каждый оборот будет отматывать по половине страницы.

Теперь мне хочется рассказать о другой возможности блужданий. Иногда нужно постоянно отпрыгивать в какое-то фиксированное место буфера для того, чтобы свериться с текстом или скопировать оттуда какие-то части. Обычно это решается открытием второго окна с тем же самым буфером и перескакиванием из одного окна в другое. Мне кажется это чудовищно неудобным. Вспоминая свое детство-отрочество-юность я с нежностью думаю о чудесном мех-матовском порождении под названием MIM, известном еще как редактор Микромир. В нем было несколько встроенных команд, которые по другому решали проблему. Самая удобная серия из этих команд делала следующее. Первая команда запоминала место где находится курсор в некотором регистре. Вторая же делала простую цепочку операций. Она запоминала текущее место курсора и прыгала на место, которое было запомнено до нее. Это было очень удобно. Например, пусть мы редактируем нечто в буффере, но иногда должны сверяться с заголовком буфера. Итак, пришло время первого прыжка. Мы запоминаем текущее место редактирования и отматываем туда, где надо сверяться с кодом. Далее, вызываем вторую команду. Она запоминает место, с которым мы будем еще сверяться, и прыгает назад, туда где мы редактируем. Далее, приходит время для второй сверки. Мы снова просто вызываем вторую команду и прыгаем в нужное место буфера. А потом опять ту же команду, чтобы вернуться. Очаровательно!

В Emacs можно сделать еще круче! Можно так прыгать даже между двумя буферами. Что вообще открывает широкие горизонты. Мне могут возразить, что такая опция как бы и не нужна, ведь есть регистры! Во-первых, скажу я вам, те команды, которые там предусмотрены по-умолчанию я не могу запомнить толком уже год моей работы с редактором! Там надо набирать сложнейшие распальцовки, которые сделают честь даже новому русскому. Во-вторых, еще скажу я вам, гораздо менее удобно использовать регистры, ибо надо запоминать в каком регистре какое место вы сохранили. А потом надо дважды выполнить сложную распальцовку для одной, по-сути, операции. Сначала надо запомнить позицию (одна распальцовка), а потом прыгнуть в запомненную ранее (другая распальцовка) и продолжать держать в голове какая позиция в каком регистре. Наконец, заняты у вас два регистра, хотя это совершенно не требовалось.

Итак, я предлагаю команду 'Meta-Meta-Shift-/' для того, чтобы запомнить текущую позицию и команду 'Meta-Meta-/' для того, чтобы перейти на запомненную позицию, прежде запомнив текущую. Конечно, вы можете придумать иные распальцовки для команд. И, конечно, это никак не отменяет использование регистров. Однако, после введения описанных команд я о регистрах совсем и думать забыл. Итак, следующий код может быть и в ваших .emacs

Надо еще помнить, что эта программа использует таки силу регистров. Точнее силу регистра 0. То есть при использовании этих команд стоит воздержаться от использования именно этого регистра.

6. Макросы, замены и повторы

Часто нужно выполнить несколько сложных (то есть составных) действий подряд. Чтобы избежать повторения нескольких операций, можно использовать макросы. Например, если вы скачали какой-нибудь текст из библиотеки Мошкова, чтобы распечатать для родных и друзей в виде удобной книжки, и при этом решили использовать редактор LaTeX, то вам, скорее всего, захочется проделать несколько элементарных манипуляций с текстом. Например, вставить между абзацами дополнительную строку. Это можно сделать следующим способом. Обычно абзац в этой библиотеке начинается с красной строки — нескольких пробелов подряд (положим, 5 пробелов). В таком случае можно вставить строку при помощи простого алгоритма: найти пять пробелов ('C-s'), остановиться в начале этой строки ('C-a'), нажать клавишу 'Enter'. Можно запомнить эту комбинацию в виде макроса. Чтобы начать запись макроса, надо нажать 'C-(' (поэтому не стоит использовать эту комбинацию для переключения языков), после чего выполнить запланированный алгоритм и завершить запись комбинацией 'C-)'. После этого это действие вызывается одной командой: 'C-x e', то есть сначала 'Ctrl-x', а потом клавиша 'e'. Пока это маленькое преимущество по сравнению со всей серией. Однако теперь у нас всего одна команда вместо трех (не считая ввода пробелов в строку поиска), и ее можно выполнить много-много раз автоматически при помощи мультипликатора команд 'C-u'. Нажав 'C-u', скажем, три раза подряд, вы заставите Emacs выполнить ваш макрос аж 64 разa (в общем случае, если вы нажмете 'C-u' n раз, вы получите 4 в степени n операций. В общем, вы можете нажать 'C-u #', где '#' обозначает количество повторений последующей операции. При этом если вы дойдете до конца файла раньше, чем кончатся эти команды, то Emacs остановится, пискнет так противно (бип) и будет снова готов к работе. Ничего не испортится.

Далее, можно заменить все вхождения '. ' на команду '\dots', а также '- ' на '--- ' или '-- ', чтобы получить нормальные многоточия и тире. Но здесь лучше всего использовать простую команду замены, которая вызывается при помощи комбинации 'M-%' (то есть 'Alt-%'). Макросы можно еще применить для выделения заголовков жирным шрифтом.

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

В результате я привожу стандартный шаблон, который я использую в LaTeX для генерации книг из библиотеки Мошкова. Причем гораздо удобнее, как выяснилось, читать в две колонки. Обычно я печатаю дома книжки для чтения в самолете, если надо далеко лететь.

Кроме того, полезно написать простой Makefile. Например, такой:

Где вместо слова zatvornik надо поставить имя файла для переработки. Кстати, если у вас нет старинной, но великолепной программы gv для просмотра и печати постскрипта, скачайте ее, либо используйте другую программу, либо работайте с dvi, либо сгенерируйте pdf. В общем, полная свобода. Пример того, что должно получиться, можно увидеть на картинке (щелкните на ней мышью, чтобы открыть в натуральную величину).

Естественно, макросы помогают не только в таких случаях. Часто в программе надо заменить кусок кода довольно интеллектуальным способом. То есть не просто текст на текст, а части текста на части текста. Это легко программируется при помощи макросов. Поэтому я бы посоветовал выучить эти комбинации или, что еще удобней, повесить их перед собой, чтобы всегда можно было вспомнить.

7. Emacs Code Browser (ecb) и программирование

Это чудо мне посоветовали на ЛОРе, когда я плакал о том, как мне не хватает возможностей Visual C. И я нашел там много удобств, которые мне так нравились в майкрософтовской среде. Вместе с другими возможностями самого редактора GNU Emacs получается прекрасная среда для программирования. Кроме того, эту систему я использую для работы в LaTeX и при написании HTML.

Расскажу об основных функциях ecb, которые мне здорово облегчают плутания по коду. Прежде всего, это функция переключения между файлами простым щелчком средней кнопки мыши на имени файла в нижнем окне ecb (конечно, можно настроить все так, что это будет не нижнее окно, но меня устраивают настройки по умолчанию). Если там этого файла нет, то его можно найти при помощи дерева каталогов (верхнее окно) и списка файлов в текущей директории (второе окно сверху). Другая функция — это та же средняя кнопка в третьем сверху окне. Если вам надо попасть в функцию или на переменную, то достаточно щелкнуть на имени этой функции или переменной в этом окне и она будет найдена и отображена в основном окне Emacs. Страшно удобно, особенно когда вы работаете с классами (смотрите иллюстрацию внизу параграфа, как всегда щелчок мыши на маленьком рисунке приводит к большой картинке).

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

На мой взгляд, ecb — одна из лучших свободных интегрированных сред. Безусловно, есть еще такие замечательные вещи, как KDevelop и Anjuta, еще несколько более мелких свободных проектов, но все они имеют два связанных недостатка для меня: они не связаны с Emacs (все же лучше привыкать к меньшему числу вещей), и они менее гибки в настройках, так как менее гибка среда редактирования. Не говоря о том, что среда Emacs — это нечто, проверенное долгим временем. При этом ecb+Emacs никак не уступают по возможностям другим IDE (интегрированным средам разработки). Для примера, на иллюстрации внизу изображен вариант редактирования HTML кода этой страницы с использованием моды ecb.

Получить ecb можно по адресу http://ecb.sourceforge.net. Только надо установить еще несколько пакетов, от которых зависит ecb. Лучший путь для этого — скачать пакет Cedet. который содержит все, что нужно для ecb, в одном флаконе.

При установке пакета лучше скомпилировать Lisp исходники. Читайте инструкции по установке в указанных выше дистрибутивах.

8. Редактирование LaTeX и HTML

В Emacs можно делать очень много чего, но не все мне нравится. Что действительно удобно, так это писать документы в формате LaTeX. Для этого вполне достаточно использовать моду по умолчанию, хотя и разработано достаточно много всевозможных пакетов именно для LaTeX'а.

Здесь же мне хотелось привести лишь свой собственный способ ускорeния ввода окружений LaTeX. Я использую следующее правило: команда 'M-M-e' задает режим окружения (смотрите главу об esc-esc ). Следующая буква определяет, какое. Скажем, команда 'M-M-e e' вставит в документ окружение equation. Чтобы это работало (и притом работало только при редактировании LaTeX документов), надо добавить в .emacs следующие строки:

После этого можно лишь добавлять строки вроде последних двух, заменяя только слово "equation" на любое необходимое. Например, 'M-M-e v' у меня работает как окружение verbatim. Для этого в .emacs добавлено лишь следующее:

Ну и так далее. Кроме того, я определил много других удобных мне горячих клавиш с 'M-M-'. Например, 'M-M-<' вставляет в документ строчку "\left\<".

Ниже на рисунке вы можете увидеть, как редактируется статья, сверстанная в LaTeX.

И теперь буквально два слова об HTML. Существует огромное число замечательных свободных программ для создания страниц для интернета. Однако огромное количество людей продолжает использовать Emacs, улучшая специальные моды и расширяя таким образом и без того бескрайние возможности этого редактора. Пример, посвященный редактированию в ecb, использует специальную моду html-helper-mode. которую я очень советую скачать и установить для Emacs.

Вот и все, что я хотел рассказать про Emacs. Если у кого-то есть предложения по улучшению моей статью или моей работы в Emacs, пожалуйста, пишите!

Здесь привожу ссылку на мой .emacs файл (совсем чуть-чуть измененный)

Наконец, в планах улучшения этой статьи — добавление рассказа об auctex,. что советовали очень многие. когда разберусь с ним, как следует, конечно.

9. Благодарности

Спасибо всем, кто помог найти ошибки в коде и в тексте. Особенно я благодарю Евгения Зайцева (a.k.a. lg), подсказавшего много улучшений в приведенном коде и Евгения Балдина. который прислал (и сделал) отличные документы по локализации, которые я учел в статье и сослался на них. Я благодарю также Майка Андреева, приславшего ценное исправление кода для скроллинга.

Я особо исключительно благодарю Виктора Серебрянского. который взял на себя колоссальный труд вычитки моего текста. Текста, который представлял из себя воистину авгиевы конюшни и который после профессиональной правки по крайней мере не раздражает глаза безграмотностью. Все, что осталось неграмотным, лежит на моей совести, так как я изменил некоторые части уже после редакции.

Авторские права на этот документ принадлежат Антону Кульчицкому ©2004. Этот документ может распространяться и изменяться в соответствии с требованиями GNU General Public License, копия которой доступна по адресу http://www.gnu.org/copyleft/gpl.html.

Emacs для начинающих

Emacs для начинающих

Emacs — один из наиболее мощных и широко распространённых редакторов, используемых в мире UNIX. По популярности он соперничает с редактором vi и его клонами.

В зависимости от ситуации, Emacs может быть:

программой для чтения почты и новостей Usenet;

интегрированной средой разработки (IDE);

всем, чем угодно.

Всё это разнообразие достигается благодаря архитектуре Emacs, которая позволяет расширять возможности редактора при помощи языка Emacs Lisp. На языке C написаны лишь самые базовые и низкоуровневые части Emacs, включая полнофункциональный интерпретатор языка Lisp. Таким образом, Emacs имеет встроенный язык программирования, который может использоваться для настройки, расширения и изменения поведения редактора. В действительности, большая часть того редактора, с которым пользователи Emacs работают в наши дни, написана на языке Lisp.

Первая версия редактора Emacs была написана в 70-х годах 20-го столетия Richard Stallman (Ричардом Столманом) как набор макросов для редактора TECO. В дальнейшем, уже будучи основателем Фонда Свободного программного обеспечения Free Software Foundation и проекта GNU. Stallman разработал GNU Emacs в развитие оригинального Emacs и до сих пор сопровождает эту программу. Вы можете подробнее ознакомиться с историей редактора, прочитав статью, располагающуюся по этому адресу .

Emacs является одним из старейших редакторов. Он использовался тысячами программистов на протяжении последних 20 с лишним лет, для него создано много дополнительных пакетов расширений. Эти дополнения позволяют делать с помощью Emacs такие вещи, которые Stallman. вероятно, даже не считал возможными в начале своей работы над редактором. Более подробно я расскажу о них в следующих разделах.

Разновидности Emacs

Существует две основных разновидности Emacs — GNU Emacs и XEmacs. GNU Emacs — это развитие оригинальной версии Emacs, написанного Столлманом, а XEmacs — это версия с некоторыми добавлениями к интерфейсу и языку Emacs Lisp. О причинах, по которым образовалось две версии, можно прочесть по этому адресу. В большинстве случаев их поведение похоже друг на друга, но есть и некоторые отличия. Поэтому некоторые пакеты расширений могут работать только с конкретной версией Emacs.

Кроме двух основных версий, существует и множество других редакторов, считающихся вариантами Emacs. Полный их список можно найти на странице Emacs Implementations and Literature .

В данном документе я буду рассказывать, прежде всего, о GNU Emacs, входящем в поставку ALT Linux . Однако большая часть сказанного применима и для XEmacs, а также для версий Emacs в других дистрибутивах Linux .

Основы работы с Emacs

В этом разделе описываются термины Emacs, с которыми вы встретитесь при использовании редактора.

Буфер — это основная единица редактирования; один буфер соответствует одному куску редактируемого текста. Вы можете иметь несколько буферов, но в каждый конкретный момент вы редактируете только один « выбранный » буфер, хотя когда вы используете несколько окон, то видимыми могут быть несколько буферов. Чаще всего буферы обращаются к какому-либо файлу, считывая данные из файла в буфер, или записывая данные из буфера в файл.

Вы встретите термин « буфер » в документации по Emacs, сообщениях программы, описаниях режимов и пакетов. Просто имейте в виду, что при работе с файлами буфер означает « копию файла, которая находится в памяти в данный момент ». Однако необходимо отметить, что буфер не всегда соответствует какому-либо файлу на диске. Очень часто Emacs создаёт буфера в результате выполнения ваших команд. Такие буфера могут содержать вывод команды, список для выбора вариантов и другую информацию.

Точка, область и метка

Точка (point) — это место в буфере, в котором происходит вставка или удаление данных. Считается, что точка находится между двумя знаками, а не на каком-то одном из них. Например, если курсор находится на букве « h » в слове « the », то точка находится между « t » и « h ». Курсор терминала показывает положение точки.

Как и другие современные редакторы, Emacs позволяет выполнять разные действия над фрагментами текущего буфера — изменение отступа, проверку орфографии, переформатирование, вырезание, копирование, вставку и т.д. Вы можете подсветить (или « пометить ») блок текста, используя клавиатуру или мышь, а затем выполнить операцию только над выделенным блоком. В Emacs такой блок текста называется область (region). Область — это текст между точкой и меткой.

Метка указывает на позицию в тексте. Она определяет один конец области, в то время как точка находится на другом конце области. Многие команды работают с текстом целиком от точки до метки. Каждый буфер имеет свою метку.

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

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

Фрейм (frame) — это отдельное окно используемой оконной системы, в котором отображаются одно или несколько окон Emacs. При этом несколько фреймов, открытых одновременно, являются частью одного сеанса Emacs.

В поставку GNU Emacs включена обширная справка (для описания функций и клавиш вызова справки смотрите таблицу 6 ). Кроме полного руководства по GNU Emacs, в неё входит учебник для начинающих пользователей. В состав дистрибутивов ALT Linux также включён русский перевод учебника. Для его вызова нажмите сочетание клавиш C - h t. и далее следуйте инструкциям, приведённым в появившемся тексте.

Emacs поставляется со встроенной программой чтения справки в формате Texinfo. В данном формате поставляется руководство по Emacs, руководства по пакетам расширения, а также документация по большинству программ проекта GNU. Для запуска системы Info нажмите сочетание клавиш C - h i. При работе со справочной системой Info, вы в любой момент можете нажать клавишу h и получить справку о том, как пользоваться справочной системой.

Основы работы с клавиатурой Командные клавиши

Для выполнения команд в Emacs широко используются клавиатурные сокращения. Особенно часто используются сочетания различных клавиш с клавишами Control (обозначается как C- ), Meta (обозначается как M-. на клавиатурах персональных компьютеров её роль часто играет клавиша Alt ), и Shift (обозначается как S- ). Эти клавиши также называются префиксными. Например, запись M - x означает, что надо нажать на клавишу x. при этом удерживая клавишу Meta (или Alt на клавиатурах персональных компьютеров).

Кроме отдельных префиксных клавиш, в Emacs используются сочетания клавиш, которые рассматриваются как префиксные. В отличии от префиксных клавиш Control. Shift и других, такие сочетания клавиш не надо удерживать когда вы нажимаете следующую клавишу. Например, сочетание C - x C - f (команда открытия файла), означает, что надо нажать на клавишу x. удерживая клавишу Control. отпустить обе клавиши, а потом нажать на клавишу f. удерживая клавишу Control .

Префиксные сочетания клавиш различаются по назначению. Например, сочетание клавиш C - x является префиксом для основных команд редактора — открытия и сохранения файлов, а также многих других важных действий. Функции, привязанные к этим клавишам, не зависят от используемого режима. Кроме этого, сочетание клавиш C - h используется для доступа к разным разделам справочной системы.

В отличие от сочетания клавиш C - x. комбинация C - c играет роль префикса для вызова функций, зависящих от используемого режима. Например, сочетание клавиш C - c C - c при редактировании исходного текста на языке С приведёт к комментированию выделенного текста с помощью функции comment-region. а при редактировании файла в формате SGML приведёт к вызову функции sgml-show-context. которая отображает текущее положение точки в иерархии документа.

Перемещение в буфере

Для расширения возможностей Emacs используются так называемые режимы — пакеты расширений, которые изменяют поведение буферов Emacs при редактировании и просмотре текста. Режимы делятся на основные и вспомогательные.

Основные режимы определяют общее поведение редактора. Как правило, основные режимы предоставляют команды и функции для редактирования определённых типов текста. Например, существуют режимы для редактирования исходного текста программ на языках С или Perl. Обычно для конкретного буфера может одновременно использоваться только один основной режим.

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

Пакеты, входящие в состав дистрибутивов ALT Linux . обычно поставляются со сценариями, которые подключают режимы с определёнными параметрами по умолчанию. Вы можете настроить конкретные параметры для нужного вам режима, используя доступные для него команды настройки (смотрите раздел “Настройка Emacs” ).

Многие основные режимы автоматически загружаются (включаются) при открытии файла с соответствующим расширением. Вы также можете включить или отключить нужный режим вручную с помощью команды M - x name-mode. где name — имя режима. Например, команда M - x auto-fill-mode включает режим автоматического заполнения строк или отключает его, если этот режим ранее был включён.

Кроме того, включение или отключение режима можно производить путём установки истинного или ложного значения переменной с именем name-mode. Для установки переменной можно использовать команду M - x set-variable. которая запросит у вас имя переменной и значение для неё. Для истинного значения обычно используется значение t. а для ложного — nil .

Работа с исходными текстами программ CC Mode

Этот основной режим используется при редактировании исходных текстов программ на языках C, C++, Java и Objective C. Режим предоставляет несколько стилей оформления текстов программ, каждый из которых определяет отступы, расположение открывающих и закрывающих скобок, а также многие другие параметры. Кроме того, данный режим обеспечивает правильную работу с выражениями соответствующего языка, а также подсветку ключевых слов и других элементов текста программы.

Режим также обеспечивает возможность компиляции программ прямо из Emacs, а также интерфейс к отладчику.

Данный режим поставляется вместе с GNU Emacs. Как правило, он подключён (сделан доступным для Emacs) по умолчанию, так что вы можете смело открывать исходный текст на соответствующем языке — режим будет загружен автоматически.

Perl

Для редактирования программ на языке Perl самым распространённым является режим cperl-mode. Он обеспечивает подсветку синтаксиса языка, а также много полезных дополнений, например, вывод подсказки о синтаксисе операторов языка или развёртывание сокращений в полные конструкции языка. Режим поставляется вместе с GNU Emacs.

Другие режимы для языков программирования

Кроме перечисленных выше режимов, в поставку GNU Emacs входит много режимов для работы с исходными текстами программ на различных языках программирования, таких как SQL, Python, Tcl, Fortran, Pascal, язык файлов make, языки разных командных процессоров, и многие другие.

Подробный список таких режимов можно найти в Emacs Elisp Archive (смотрите раздел “Полезные ресурсы” ).

Пакет JDEE

JDEE — это среда разработки Java для Emacs. Этот пакет обеспечивает эффективную работу с исходными текстами программ на языке Java.

JDEE позволяет компилировать, запускать и отлаживать как автономные программы, так и апплеты, написанные на языке Java. Кроме этого, пакет обеспечивает богатые возможности по автоматической вставке текста для различных конструкций Java, дополнение имён функций и переменных — членов классов, навигацию по исходным текстам и многое другое.

Пакет Emacs Code Browser

Emacs Code Browser (ECB) представляет собой интегрированную среду разработки, реализованную на основе Emacs. В настоящее время эта среда может быть использована для работы с исходными текстами программ на языках C, C++, Java, Emacs Lisp. Работа с исходными текстами программ на языке Java особенно эффективна при использовании пакета JDEE, упомянутого ранее.

Рисунок 2. Окно Emacs при запущенном Emacs Code Browser

Как видно на рисунке 2. слева расположены четыре окна, в которых отображаются список рабочих каталогов, список файлов в выбранном рабочем каталоге, список функций/методов в текущем файле, а также список буферов. Справа располагается окно редактирования исходного текста программы. При смене текущего буфера изменяются и данные, отображаемые слева.

Для активации пакета необходимо выполнить команду M - x ecb-activate. После выполнения этой команды появится окно, изображённое на рисунке. Для прекращения работы необходимо выполнить команду ecb-deactivate .

Работа с текстами

Для работы с файлами TeX/LaTeX основным режимом является режим auctex. Этот режим облегчает ввод команд разметки TeX/LaTeX. Кроме того, данный режим обеспечивает компиляцию файлов, просмотр результатов и обработку ошибок.

Для режима auctex существует несколько дополнений, которые позволяют просматривать результат обработки текста прямо в том буфере, где происходит его редактирование. Это пакеты preview-latex и x-symbol. Как выглядит окно Emacs при редактировании текста с использованием пакета preview-latex изображено на рисунке 3.

Рисунок 3. Окно Emacs при использовании пакета preview-latex

Проверка правописания

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

Помимо проверки текста по требованию, доступен вспомогательный режим, который называется flyspell-mode. Он проверяет слова по мере их ввода. Этот режим также входит в поставку GNU Emacs.

Другие режимы и пакеты

В этот пакет входит много самых разных полезных дополнений для различных режимов. Например, пакет tiny-perl, входящий в состав этого пакета, предоставляет команды для просмотра документации по модулям Perl, команды для редактирования документации и многое другое. Пакет tiny-tools можно скачать по адресу http://tiny-tools.sourceforge.net. Данный пакет также входит в состав дистрибутивов ALT Linux .

Пакет Tramp

Этот пакет представляет возможности доступа к файлам на других компьютерах. Этот пакет аналогичен по свойствам пакету Ange-FTP, однако Ange-FTP использует для перемещения файлов между машинами протокол ftp, тогда как Tramp использует команды rsh/rcp, или их более безопасные аналоги — ssh/scp. Данный пакет входит в состав дистрибутивов ALT Linux .

Контроль версий

Вы можете выполнять команды командного процессора прямо из GNU Emacs. Для выполнения одной команды вы можете использовать последовательность клавиш M -. при этом результат выполнения отображается в мини-буфере. Но если вы хотите выполнить несколько команд с удобным просмотром результатов выполнения, то лучше использовать команду M - x shell. которая запускает командный процессор и предоставляет различные возможности по работе с историей команд.

Кроме возможности запуска внешнего командного процессора, для Emacs существует пакет eshell (он поставляется вместе с GNU Emacs), который полностью написан на Emacs Lisp. При этом не запускается никаких внешних процессов, кроме тех, которые совсем уж необходимы для работы. Этот пакет разрабатывался как функциональная замена bash, zsh, 4doc и rc. Для его запуска вам нужно просто набрать M - x eshell. и перед вами возникнет привычная командная строка, только с дополнительными возможностями, которые вы можете расширять собственными силами.

Справочные страницы

Для чтения справочных страниц (man pages) GNU Emacs представляет два независимых интерфейса — man и woman (от сочетания without man — без использования команды man). Просто наберите команду M - x man или M - x woman и введите название нужной вам страницы, и она будет отображена в буфере Emacs.

В отличие от команды man. команда woman позволяет использовать завершение для имён справочных страниц, однако работает медленнее. Кроме того, команда woman не использует никаких внешних программ для отображения справочных страниц (отсюда происходит её название).

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

Первое время вы можете даже не заглядывать в файл настройки, а настраивать Emacs через пункт меню Customize Emacs из меню Options. или с помощью команды M - x customize. Для того, чтобы ваши настройки автоматически восстанавливались при каждом запуске, их необходимо сохранить, нажав на кнопку Save в буфере настройки. При этом в ваш файл настройки записываются выражения Emacs Lisp, устанавливающие необходимые параметры.

Настройка русского языка в GNU Emacs

GNU Emacs для работы с разными языками использует MULE (Многоязыковые расширения для GNU Emacs). Это позволяет эффективно работать как с европейскими, так и с азиатскими языками.

Для работы с конкретным языком необходимо определить так называемое языковое окружение. Для ввода не-ASCII символов надо определить метод ввода. Для переключения между языками используется специальное сочетание клавиш C - \ .

Чтобы настроить GNU Emacs для работы с русским языком (предполагается использование кодировки koi8-r), надо поместить в ваш файл настройки (

/.emacs ) следующие строки:

Этот код устанавливает кодировку koi8-r в качестве основной кодировки для чтения, записи и общения с внешними программами. Кроме этого, определяется псевдоним для русской кодировки Windows — cp1251.

Для правильного отображения текстов необходимо установить для начертания default (это можно сделать с помощью команды M - x customize-face ) шрифт, который содержит большой набор кодировок, включая кодировку для отображения utf-8 (например, misc-fixed ). Такая настройка позволит, например, нормально работать с русскими и немецкими словарями в одном буфере Emacs.

Настройка вида Emacs