Emacs как ide для с

Обновлено: 06.07.2024

К сожалению, Unix-системы поставляются без какого бы то ни было включающего-все-что-вы-захотите-и-гораздо-больше одного-гигантского-пакета интегрированной среды разработки, которые имеются в других системах. [1] Однако имеется возможность настроить собственную среду. Она может быть не такой уж красивой, и не очень интегрированной, но вы можете настроить ее так, как вам этого хочется. И она бесплатна. И доступны ее исходный код.

И все это называется Emacs. Некоторые питают к нему отвращение, но многие его любят. Если вы из первых, то боюсь, что этот раздел мало вас заинтересует. Также вам потребуется некоторое количество памяти для его работы--я рекомендую 8 МБ для текстового режима и 16 МБ для X в качестве минимальных требований для получения удовлетворительной производительности.

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

Здесь даже вкратце просто невозможно описать все, что может делать Emacs, но вот только некоторые из возможностей, представляющих интерес для разработчиков:

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

Выпадающие меню и встроенная система помощи.

Синтаксическое выделение и формирование отступов в зависимости от языка.

В Emacs вы можете компилировать и отлаживать программы.

При возникновении ошибки компиляции вы можете перейти к соответствующей строке исходного кода.

Дружественный интерфейс с программой info, используемой для чтения гипертекстовой документации GNU, включая документацию на сам Emacs.

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

Вы можете читать телеконференции Usenet и электронную почту во время компиляции программы.

И, несомненно, многое из того, что я не упомянул.

Emacs может быть установлен во FreeBSD как порт Emacs.

После того, как он будет установлен, запустите его и нажмите C-h t для изучения учебника по Emacs--это означает удерживание клавиши control и одновременным нажатием на клавишу h, с последующим отпусканием клавиши control и нажатием кнопки t. (Либо вы можете использовать мышь для выбора пункта Emacs Tutorial из меню Help ).

Хотя в Emacs имеются меню, стоит изучить используемые клавиатурные команды, так как при редактировании чего-либо гораздо быстрее нажать несколько клавиш, чем искать мышь и потом щелкать в нужном месте. И, если мы поговорите с опытными пользователями Emacs, то вы обнаружите, что они часто иногда выдают фразы типа `` M-x replace-s RET foo RET bar RET '', так что полезно знать, что они означают. И, в любом случае, в Emacs имеется слишком много полезных функций, чтобы уместить их все в системе меню.

К счастью, достаточно легко найти клавиатурные сокращения, так как они выводятся рядом с пунктом меню. Я советую пользоваться пунктом меню, скажем, для открытия файла, до тех пор, пока вы не поймете, как это работает и почувствуете себя уверенно, и только затем попробуете выполнить C-x C-f. Когда вы будете этим удовлетворены, переходите к изучению следующей команды меню.

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

Кстати, выражение выше означает удержание клавиши Meta , нажатие x , отпускание клавиши Meta , набор replace-s (сокращение для replace-string --еще одной особенностью Emacs является возможность сокращать команды). нажатие клавиши return , набор foo (строки, которую вы хотите заменить), нажатие клавиши return , набор bar (строки, которая заменит foo ) и нажатие return снова. Emacs выполнит операцию по поиску и замене, которую вы только что запросили.

Если вы интересуетесь, в какой точке земного шара находится клавиша Meta , то это особая клавиша, которая имеется на многих рабочих станциях Unix. К несчастью, на PC их нет, поэтому обычно это клавиша alt (или, если вам уж совсем не повезло, клавиша escape ).

Да, чтобы выйти из Emacs, нажмите C-x C-c (это означает удержание клавиши control , нажатие на x , нажатие на c и отпускание клавиши control ). Если у вас есть открытые несохранненные файлы, Emacs выдаст запрос на их сохранение. (Не принимайте во внимание документацию, в которой говорится о C-z как об обычном способе выхода из Emacs--при этом Emacs остается работать в фоновом режиме и действительно необходима в случае работы с системой, но которой нет виртуальных терминалов).

2.7.2 Настройка Emacs

Emacs имеет огромные возможности; некоторые из них являются встроенными, некоторые нужно настроить.

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

Лучше всего изучать Emacs Lisp, скачав Учебник по Emacs

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

2.7.3 Пример файла .emacs

К сожалению, здесь слишком много всего, чтобы объяснить подробно; однако на паре мест стоит остановиться подробнее.

Все, что начинается с символа ; , является комментарием и игнорируется Emacs.

В первой строке -*- Emacs-Lisp -*- нужна для того, чтобы мы могли редактировать сам файл .emacs в редакторе Emacs и имели все удобства редактирования текстов Emacs Lisp. Emacs обычно пытается угадать характер содержимого на основе имени файла, и этого корректно может не получиться в случае .emacs.

Клавиша tab в некоторых режимах работает как функция формирования отступа, поэтому при нажатия клавиши табуляции в текущей строке кода будет сформирован отступ. Если вы хотите разместить где-либо символ tab , то при нажатии клавиши tab удерживайте клавишу control .

This file supports syntax highlighting for C, C++, Perl, Lisp and Scheme, by guessing the language from the filename.

В Emacs уже имеется предопределенная функция с именем next-error . В окне вывода результата компиляции она позволяет вам передвигаться от одной ошибки компиляции к другой по нажатию M-n; мы определили дополнительную функцию previous-error , которая позволяет переходить к следующей ошибке по нажатию M-p. Самой приятной возможностью является то, что по нажатию C-c C-c файл с исходным текстом, в котором произошла ошибка, будет открыт на соответствующей строке.

Мы включили возможность Emacs работать как сервер, так что если вы делаете что-то вне Emacs и хотите отредактировать файл, то можете просто набрать

и после этого сможете редактировать файл в вашем Emacs! [2]

Example 2-1. Примерный файл .emacs

2.7.4 Расширение количества языков, с которыми может работать Emacs

Итак, хорошо, если вы собираетесь программировать только на языках, уже описанных в файле .emacs (C, C++, Perl, Lisp и Scheme), но что случится, если вышел новый язык под названием ``whizbang'', в котором имеется масса привлекательных возможностей?

Первым делом нужно проверить, не поставляется ли с языком whizbang с файлами для Emacs, которые служат для описания языка. Обычно они имеют окончание .el, что означает ``Emacs Lisp''. Например, если whizbang является портом FreeBSDm мы можем поискать такие файлы командой

и установить их, скопировав их в каталог Lisp для Emacs вашей системы. Во FreeBSD 2.1.0-RELEASE это каталог /usr/local/share/emacs/site-lisp.

Так, для примера, если результат выполнения команды поиска выглядит как

Затем нам нужно решить, какое расширение имеют файлы с исходными текстами на языке whizbang. Пусть, для примера, они все оканчиваются на .wiz. Нам нужно добавить запись в наш файл .emacs, чтобы Emacs смог использовать информацию из whizbang.el.

Найдите строку auto-mode-alist в файле .emacs и добавьте строку для whizbang, такую, как:

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

Чуть ниже вы найдете запись для font-lock-auto-mode-list . Добавьте к ней whizbang-mode следующего вида:

Это означает, что Emacs всегда будет использовать режим font-lock-mode (то есть выделение синтаксических конструкций) при редактировании файлов .wiz.

И это все, что нужно. Если есть что-то, что вы хотите делать автоматически при открытии файлов .wiz, то можете добавить строку whizbang-mode hook (смотрите my-scheme-mode-hook в качестве простого примера, который добавляет auto-indent ).

Notes

В коллекции портов имеется несколько мощных свободно распространяемых IDE, таких, как, например, KDevelop.

Многие пользователи Emacs указывают emacsclient в качестве значения своей переменной окружения EDITOR, поэтому это происходит всякий раз, когда им нужно отредактировать файл.

Уже более года я пытаюсь использовать Emacs в качестве C / C ++ IDE. До сих пор я добился лишь незначительного успеха, но по пути наткнулся на несколько кирпичных стен. В настоящее время я пытаюсь использовать CEDET, но мне трудно понять, как эффективно его использовать.

Функции, которые я ищу в IDE, следующие:

  1. Управление программным обеспечением «Проекты». Я хочу, чтобы моя среда разработки имела представление обо всех файлах, составляющих мой текущий проект, чтобы я мог выполнять такие функции, как поиск и замена в моем проекте. (Было бы неплохо, если бы я мог достичь этого, не засоряя дерево исходных текстов большим количеством вспомогательных файлов. Почему мне нужно более одного централизованного файла проекта на проект?)
  2. Возможность построить текущий проект из среды IDE, независимо от того, какой буфер я сейчас посещаю. Мне нужно иметь возможность связать ключ, который будет строить текущий проект.
  3. Отчет об ошибках. Я не хочу читать более 500 строк, чтобы найти ошибки, о которых сообщили инструменты сборки. Предпочтительно ошибки отображаются в собственном буфере с одной строкой на ошибку.
  4. Осведомленность о символах в рамках проекта и о том, где они определены. Я хочу перейти к определению символа, находится ли он в моих файлах проекта или в системных включаемых файлах.
  5. Визуальная отладка. Я хочу иметь список отслеживания локальных переменных, которые обновляются автоматически при выполнении кода. Я хочу иметь возможность устанавливать точки останова в коде, чтобы увидеть, какая строка кода будет выполняться дальше.

Я знаю, что каждая из этих функций существует, потому что у меня была каждая из них, работающая в то или иное время с использованием EDE, Semantic, GDB и т. Д. Проблема в том, что мне никогда не удавалось работать со всеми этими функциями одновременно потому что каждый компонент обычно должен быть настроен сам по себе, и обычно слишком много работы, чтобы выяснить, как настроить их все сразу и заставить их работать вместе.

Какие существуют решения для превращения Emacs в полнофункциональную среду разработки C / C ++? Вы всегда должны настраивать все по частям, или есть способ настроить все функции одновременно?

РЕДАКТИРОВАТЬ: хороший ответ на этот вопрос не обязательно должен точно соответствовать всем пяти из указанных критериев. Я просто предоставил список, чтобы дать более конкретное представление о типе функций, которые я хочу увидеть, прежде чем я буду считать IDE «полнофункциональным». Вполне возможно, что CEDET мог бы соответствовать всем требованиям, но мне еще предстоит найти рабочее пошаговое руководство по его настройке с нуля.

@Malabarba: Если бы я задавал пять отдельных вопросов, это мог бы быть дубликат. Весь смысл этого вопроса в том, что может быть пять разных пакетов, которые достигают пяти разных целей, но настроить все пять для приятной игры друг с другом кажется почти невозможным. Если ответ возвращается как «Emacs не может функционировать как полнофункциональная IDE, потому что для конфигурирования требуется немало времени». Так тому и быть. Каждый из пунктов может быть своим собственным вопросом (потенциально дублированным), объединение их всех в один вопрос может иногда приводить к разным ответам из-за взаимодействия пакетов.

Для разных языков существуют разные уровни «IDE-сущности», и, к сожалению, вы никогда не получите полнофункциональные возможности IDE без какой-либо настройки (если вам не нравится конфигурирование, вам, вероятно, не следует использовать Emacs). CEDET стремится быть законченным решением, которое покрывает все ваши потребности в поддерживаемых языках, но лично я никогда не работал должным образом; вместо этого я использую несколько пакетов в тандеме для покрытия моих баз IDE. Я расскажу о ваших пунктах по порядку и предложу несколько решений для разных языков:

    является наиболее близким пакетом для обеспечения реального IDE-подобного опыта. Он предоставляет массу полезных функций для каждого проекта. Вы, вероятно, также захотите какое-то управление окнами / рабочим пространством; Я использую свое собственное решение под названием wacspace , но другие хорошие решения включают перспективу , рабочие группы и elscreen .
  1. Разные языки имеют разные представления о том, что такое «сборка», но M-x compile могут вместить практически все, что упрощает разбивку по ошибкам (просто используйте next-error ). Вы можете легко настроить индивидуально для каждого проекта, используя переменные каталога для установки compile-command . Вы можете запустить compile с помощью снаряда, используя projectile-compile-project ( C-c p c ).
  2. M-x compile Также вы рассмотрели здесь - ошибки обычно заканчиваются по одному на строку в *compilation* буфере, с легкой подкачкой next-error .
  3. Переход к символу подразумевает «понимание вашего кода», и здесь поддержка значительно варьируется в зависимости от языка. Для Elisp вы можете использовать превосходную elisp-slime-nav , а затем M-. перейти к определению. Вот некоторые пакеты, которые предоставляют аналогичную поддержку для других языков: CIDER (для Clojure); SLIME (для Common Lisp); халат (для Руби); семантические или clang-теги для C / C ++ (отказ от ответственности: я никогда не использовал ни одного, поэтому я не знаю, хорошо ли они работают). Если ничего не помогает, вы также можете использовать встроенные в Emacs средства TAGS, используя что-то вроде обильных ctags , но я никогда не достигал приемлемых результатов с TAGS.
  4. В Emacs очень разбросана поддержка отладчиков. GDB с GUD - ваш лучший выбор для языков, подобных C; в противном случае, это в значительной степени полностью на основе языка. (Я не думаю, что визуальная отладка на нескольких языках действительно является реалистичной целью.)
В качестве бокового узла projectile можно интегрировать напрямую с perspective созданием perspective-per-project автоматически включенного проекта. Я никогда не использовал semantic , и я помню, что он имеет неполную поддержку C ++, но я добавил это к ответу.

Я использовал это руководство, чтобы начать использовать Emacs в качестве C ++ IDE. Он представляет Хелм и Снаряд, который поможет ответить на ряд ваших вопросов. Для остроумия,

Снаряд управляет проектами. Он ищет в дереве каталогов файлы Makefile, SConstruct, Git repo, SVN repo и, возможно, некоторые другие файлы системы сборки или контроля версий, чтобы автоматически узнать, какие файлы связаны с текущим проектом. Например, C-c p h запуски, helm-projectile использующие Helm для поиска файла в текущем проекте.

Снаряд может строить ваши проекты. C-c p c запускает, projectile-compile-project который пытается запустить Make / SCons / CMake на основе доступных файлов. Мне никогда не приходилось настраивать это; он всегда знал, что делать.

Ошибки появляются в их собственном буфере, когда вы запускаете, projectile-compile-project но я не уверен, что это так красиво, как хотелось бы.

Вы можете использовать пакет, helm-gtags который взаимодействует с gtags программой (который вы должны иметь в своей системе). Обратите внимание, что gtags является проектом GNU и поэтому вряд ли будет работать сразу в Windows.

После настройки Helm узнает о символах в проекте и может переходить к определениям и использовать местоположения. Например, helm-gtags-dwim можно перейти к любому использованию переменной или функции, и при запуске на заголовочный файл открывает этот заголовочный файл.

Я еще не пробовал это.

Перечисленное руководство дает очень подробную информацию о конфигурации, как начать работу.

Я тоже наткнулся на это руководство и применил его. ИМХО, это как-то тяжеловесно и слишком сильно меняет базовое взаимодействие с emacs. Я отключил ряд настроек, связанных с рулем, потому что они мешали обычным сочетаниям клавиш (например, легко открывать текущий каталог в буфере или открывать файл в подпрограмме sub с помощью нескольких нажатий клавиш). Стоит посмотреть, хотя, но, вероятно, следует попробовать шаг за шагом, а не в целом.

Поскольку вы сейчас запрашиваете полнофункциональную IDE C / C ++, я могу быть квалифицированным.

Я использовал все MS IDE от vc4 до Visual Studio 2010, поэтому я полностью понимаю, что вы хотите.

Хорошей новостью является то, что Emacs может быть на 95% лучше Visual Studio, и он может сделать гораздо больше. но вы можете быть не заинтересованы в "более" части. Поэтому я сосредоточусь только на ваших вопросах.

Теперь ключевой момент, вы ДОЛЖНЫ ИСПОЛЬЗОВАТЬ CMake , даже ваше приложение C ++ предназначено только для Windows! Конец истории. Другого выбора нет, я знаю о чем говорю. Если вы не используете CMake, продолжать бессмысленно.

Ответ на вопрос 2 : он уже настроен cpputils-cmake, вам просто нужно, M-x compile как обычно.

Ответ на вопрос 3 : так же, как вопрос 2. Я не знаю, почему это проблема. это то же самое поведение, что и VS, с лучшими привязками клавиш.

Ответ на вопрос 4 : сейчас большинство людей просто используют Gnu Global, который можно комбинировать с cpputils-cmake. Я понимаю, что реальная проблема заключается в автоматическом обнаружении каталогов, содержащих все включенные заголовки C ++ . Это можно сделать с помощью cpputils-cmake, все остальное легко. Пожалуйста, man global в оболочке и прочитайте руководство по поводу переменной среды GTAGSLIBPATH. Есть много плагинов для обеспечения хорошего UX на основе Global для навигации по коду, я рекомендую ggtags.el

В IDE есть еще много вещей: завершение кода? используйте режим компании, нет необходимости в настройке. проверка синтаксиса в реальном времени? используйте cpputils-cmake, затем (flymake-mode 1)

Теперь я должен подчеркнуть кое-что: Emacs дает вам полную свободу . Вы можете выбрать любой способ начать. трудный путь или легкий путь.

Самый простой способ - просто скопировать мои настройки (или чьи-либо настройки на github, сначала посчитайте звезды), через 5 минут у вас будет полнофункциональная C ++ IDE. VS не закончил запуск в эти 5 минут.

Сложный способ настройки с нуля. Если вы выбираете трудный путь, то не жалуйтесь на Emacs . Это твой выбор.

Кстати, в конечном счете, знание Emacs Lisp может оказаться полезным. Я думаю, что для профессионального разработчика на C ++ это тривиально по сравнению с тем временем, которое я потратил на MS sh * t. Много лет назад MS молча обновила свою среду выполнения VC в некоторых обновлениях Windows. Благодаря этому мой продукт работал нормально на компьютерах компании, но зависал на компьютерах клиентов .

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

Может у кого-то есть уже настроенный .emacs файл?


Даже без навесок типа cedet-а Emacs очень хорошо выполняет роль IDE. Для навигации по файловой системе там есть dired (M-x dired), который на ура справляется с функцией файл-менеджера. Поиск по C-s или C-r -- тоже обалденная фича, которой ни в одной IDE я не видел.

apt-get remove emacs && apt-get install vim


Emacs[cedet] + C++ пока сливает давольно сильно даже тому же кодеблокс в плане автокомплита. Но, конечно, среда все же дико удобна в других аспектах. Мне в основном C нужен. Для удобства использую в сем направлении: + ecb + cedet + cscope + xref (халявный) + org-mode ( :) )

В плане конфигурации всего этого барахла - читать прилагаемое info, и M-x customize-group .

Да, и еще: ecb/cedet надо тянуть из CVS. Ну и подписываться на мейл лист, и всячески помогать Эрику :)


> Поиск по C-s или C-r -- тоже обалденная фича, которой ни в одной IDE я не видел.

Собственно возможность включения инкрементального поиска «как в Emacs» является одним из немногих достоинств Visual Studio :-)

Такс, cedet я поставил как-то(типа make сделал и прописал откуда cedet.el грузить в .emacs)

теперь подскажите, что еще надо там настроить

я не очень понял насчет xref, ecb.

А еще, как настроить cedet, что бы она показывала(как intellisence) параметры функций(не тока моих но и стандартных), тоесть тот же printf напр. или что-то из std:: списочек выскакивал, это реально ?

Среда в Линукс, мне нужна для разработки игрового движка, тоесть приходится работать с множеством файлов(более 50-80 файлов).

Поэтому мне необходима быстрая навигация(как в VS), удобная отладка и т.д.

Как я понимаю, удобно юзать Autoconf будет и Automake, чтобы самому полностью скрипты не прпоисывать, а то я еще юзаю несколько либ у себя. (opengl, vorbis, ogg, std и т.д.).


Доброго времени суток, Читатель!

В данной статье хочу подробно рассказать про настройку текстового редактора GNU Emacs.

Операционная система GNU Emacs — программируемый текстовый редактор для программистов, написанный на программируемом языке программирования.

Для расширения Emacs используется диалект языка Lisp — Emacs Lisp.
Строго говоря, Emacs нельзя назвать просто текстовым редактором. Emacs — это интерпретатор языка Emacs Lisp, конструктор текстового редактора, заточенного именно под Вас. Малая часть программы реализована на языке Си (около 30% — отвечает за базовое взаимодействие с ОС, ввод-вывод, отрисовку окон), а весь основной функционал — на Emacs Lisp (далее, elisp). Именно такая архитектура отличает GNU Emacs от других профессиональных текстовых редакторов — он, до неприличия, расширяем.

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

  • хочет начать использовать GNU Emacs, но не знает как;
  • пишет на языках, поддержка которых в IDE оставляет желать лучшего или её вообще нет;
  • пишет на разных языках, «программист-полиглот»;
  • хочет иметь универсальную среду разработки на работе и дома, на нескольких компьютерах сразу;
  • хочет иметь функциональную и мощную среду для plain/text заметок (organizer), ведения справочной информации, управления проектами, организации базы знаний и т.д. — org-mode;
  • хочет автоматизировать процесс обработки большого числа текстовых файлов;
  • хочет иметь нетребовательную к аппаратным ресурсам, кроссплатформенную среду для работы с любой текстовой информацией;
  • хочет среду, которую можно без особых усилий, буквально «на лету», настроить под себя, свою конкретную задачу, расширить, самостоятельно добавив новый функционал;
  • любит универсальность и расширяемость;
  • пишет для web, на скриптовых языках: Python, Ruby, Perl и т.п.;
  • хочет приобщиться к вечному, к Emacs — одному из самых долгоживущих проектов Open Source сообщества;



Да. Вы не ошиблись. Фильм «Трон: Наследие». GNU Emacs используют и там. Кто бы мог подумать…

Забыл предупредить: я пишу на Common Lisp (ещё один диалект языка Lisp), поэтому часть материала будет про то, как превратить Emacs в полноценную IDE с картами и девушками для этого языка программирования. Хороший пример, к стати…

Установка

    архив с официального сайта;
  • создать директорию C:\emacs\ и распаковать в него скаченный архив;
  • запустить файл C:\emacs\bin\addpm.exe (создаст пункт в меню Пуск для запуска Emacs).

    в терминале выполнить команду:

  • посмотри тут;
  • или здесь;
  • можно глянуть вот сюда.

Настройка

Есть, как минимум, четыре способа настройки Emacs:

  • написанием конфигурационного файла .emacs;
  • через меню программы;
  • с помощью команды M-x customize (C-x означает Control-x, M-x означает Meta-x, где Meta может означать: «нажать-отпустить Esc» или «нажать-держать Alt». (например, Meta-x это или нажать Esc, затем x, или, удерживая Alt, нажать x);
  • спереть позаимствовать чужой файл .emacs и начать работать (не советую).

Файл конфигурации .emacs

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

  • C-a: Ctrl-a;
  • M-a: Meta-a (Если у Вас нет клавиши Meta (Alt), используете клавишу Esc);
  • C-M-a: Ctrl-Meta-a.

Для начала, расскажем Emacs о том, в какой операционной системе он запустился. Для этого напишем на elisp две функции, которые нам в этом помогут:


Теперь, вызывая эти функции как условия для операторов ветвления, мы можем настроить кроссплатформенный файл конфигурации для Emacs (результатом наших трудов будет файл .emacs, который прекрасно работает в ОС MS Windows и дистрибутивах GNU/Linux. На Mac OS X не проверял).

IDE для Common Lisp

Для превращения Emacs в полноценную среду разработки для языка Common Lisp нам понадобится два пакета:

  • реализация Common Lisp. Я выбрал SBCL; — режим Emacs для разработки приложений на языке Common Lisp.
  • скачать SBCL;
  • установить в C:\sbcl\ скаченный SBCL;
  • скачать Slime;
  • разместить в C:\slime\ скаченный Slime.

Поехали дальше

Если Вы счастливый пользователь Mac OS X или дистрибутива GNU/Linux, то Emacs полезно запустить как сервер:


Далее, укажем Emacs пути по которым но сможет найти установленные дополнения (в частности, пакеты Slime и SBCL):


Давайте расскажем Emacs о том, кто мы такие (мало-ли, решите через Emacs почту отправлять или в jabber'e переписываться. ):


Мой любимый dired-mode. Настроим его:


Теперь можно запустить dired-mode комбинацией клавиш C-x d. Для удаления папки в dired-mode наведите курсор на эту папку, нажмите d, затем x. Чтобы убрать с папки отметку на удаление нажмите u.

Замечательный способ «прыгать» по определениям функций почти для всех языков программирования — Imenu. Предположим, что у Вас файл с программой на 100500 строк с кучей функций. Не беда! Нажимаем F6 и в минибуфере вводим часть имени искомой функции и TAB'ом дополняем. Нажали Enter — и мы на определении искомой функции:


Пишем название открытого буфера в шапке окна:


Помните, что мы определили пути, по которым Emacs ищет дополнения и внешние программы? Пусть «пройдется» по этим путям (где дополнения) при запуске:


Еще не забыли, что Emacs предоставляет Вам прекрасную среду для plain/text заметок (organizer), ведения справочной информации, управления проектами, организации базы знаний и т.д. — org-mode? Настроим:


Наведем аскетизм красоту — уберем экраны приветствия при запуске:


Выделим выражения между <>,[],(), когда курсор находится на одной из скобок — полезно для программистов:


В новых версиях Emacs внедрили electic-mod'ы. Первый из них автоматически расставляет отступы (работает из рук вон плохо), второй — закрывает скобки, кавычки и т.д. Отключим первый (Python программисты меня поймут. ) и включим второй:


Хотим иметь возможность удалить выделенный текст при вводе поверх? Пожалуйста:


Уберем лишнее: всякие меню, scroll-bar'ы, tool-bar'ы и т.п.:


Самое больное и сложное место в настройке — кодировки:


Включаем нумерацию строк:


Продолжаем наводить красоту:


Автоматический перенос длинных строк:


Определим размер окна с Emacs при запуске:


Интерактивный поиск и открытие файлов? Пожалуйста:


Быстрая навигация между открытыми буферами:

Цветовые схемы. Как без них? Для этого:

  • скачаем пакет color-theme для Emacs отсюда;
  • создадим директории .emacs.d/plugins/color-theme;
  • распакуем туда содержимое архива с темами;
  • расположить папку .emacs.d в:
    • для MS Windows в корень диска C:\.emacs.d
    • для GNU/Linux в домашнюю директорию


    Общий с ОС буфер обмена:


    Настройки пустых строк в конце буфера:


    Выделять результаты поиска:


    Перемещение между сплитами при помощи комбинаций M-arrow-keys (кроме org-mode):


    Удалить лишние пробелы в конце строк, заменить TAB'ы на пробелы и выровнять отступы при сохранении буфера в файл, автоматически:


    Пакет CEDET — работа с C/C++/Java (прекрасная статья Alex Ott'a по CEDET):


    Автодополнение ввода. Для этого:

    • скачаем пакет auto-complete для Emacs отсюда;
    • создадим директории .emacs.d/plugins/auto-complete;
    • распакуем туда содержимое архива с auto-complete;
    • расположить папку .emacs.d в:
      • для MS Windows в корень диска C:\.emacs.d
      • для GNU/Linux в домашнюю директорию

      Настроим среду для Common Lisp — Slime:


      Настроим Bookmark — закладки, которые помогают быстро перемещаться по тексту:


      Собственно, всё! Можно нажать C-x C-s и сохранить файл .emacs. Куда положить файл .emacs и папку .emacs.d (если использовать пути из моего .emacs):

      • .emacs в C:\Users\%username%\AppData\Roaming\
      • папку .emacs.d в корень диска C:\
      • .emacs в домашнюю директорию: /home/%username%/
      • папку .emacs.d в домашнюю директорию: /home/%username%/

      image

      Полезные ссылки

      Множество полезных статей по GNU Emacs на Хабрахабр. Также есть серия замечательных скринкастов на YouTube про Emacs, опубликованных Дмитрием Бушенко:

      Cерия скринкастов (на англ. языке) Emacs Rocks.

      Невероятно огромная, подробная и полезная статья (на англ. языке): Sacha Chua's Emacs configuration.

      Огромное разнообразие цветовых тем для Emacs. Смотреть тут.

      Чтобы не оставить без внимания пользователей другого редактора — Vim, вот ссылка на мой .vimrc на GitHub. Там все подробно описано (если что, могу и по Vim статью написать. ).

      Читайте также: