EMACS - начало
Введение
Я не буду здесь рассказывать в деталях, чем плоха та или иная IDE или чем мне не угодили VIM и Sublime Text. Начнём лучше с того, чем EMACS хорош.
EMACS хорош в первую очередь тем, что это не просто текстовый редактор, а настоящий конструктор, из которого можно сделать как полноценную IDE для разработки практически на любом языке, так и издательскую систему или текстовый процессор. Основная фишка - возможность расширять возможности редактора путём написания сценариев на языке EMACS Lisp. К счастью, всё уже написано до нас, и лично мне ни разу не приходилось писать что-то своё, однако при этом я смог превратить EMACS в IDE для WEB- и Python-разработки. Да, эту статью я тоже пишу в нём.
Во-вторых, он быстр. Он не требует JRE для своей работы, написан на C и EMACS Lisp, запускается и работает очень быстро.
Это свободное ПО, что для обычного российского пользователя означает как раз "Free beer".
Он не перегружен меню, диалоговыми окнами, кучей разных панелей и т.д. Лаконичный интерфейс легко может быть расширен или сведён к пугающему минимализму - выбор за вами.
Огромная база готовых пакетов. Там есть практически всё, что нужно, от поддержки редких языков до веб-браузера и игр. Серьёзно!
Установка
Установка в Windows предельно проста - нужно зайти на этот сайт и скачать архив с последней версией. Распаковываем её в любое нужное место, находим в каталоге bin файл runemacs.exe и создаём для него ярлык на Рабочем столе.
Установка в Linux может быть чуть сложнее. Как правило, в Debian и Ubuntu LTS идёт устаревшая версия дистрибутива. Я рекомендую использовать не ниже 24.0, в противном случае часть пакетов (можно считать их плагинами) не будет работать. Если в официальном репозитории слишком старая версия, придётся собирать EMACS из исходных кодов, что заслуживает отдельной статьи. Здесь на этом останавливаться не буду.
Помимо самого EMACS необходимо иметь в системе установленную систему контроля версий Git. Пользователи Windows могут скачать здесь.
Комбинации клавиш
Оригинальные комбинации клавиш EMACS устарели. Нажимать [Ctrl]
(в любом руководстве по EMACS эта клавиша обозначается как [C]
) мизинцем неудобно. Когда-то [Ctrl]
располагался на месте сегодняшнего [Alt]
, и пользоваться им было удобно, но времена мэйнфреймов давно прошли... Подробный разбор того, почему комбинации клавиш в EMACS такие, какие есть, и почему это плохо, производится здесь [EN]. Нет смысла изучать дефолтные настройки комбинаций клавиш, всё равно придётся потом переучитваться. Однако, в экстренных ситуациях может пригодиться как минимум две команды:
Комбинация | Действие |
---|---|
[M-X] |
Вход в минибуфер для ввода команд |
[C-X, C-C] |
Завершение работы редатора |
После установки и активации пакета ergoemacs-mode комбинации клавиш будут переопределены. Рекомендую сделать это как можно быстрее, т.к. отвыкнуть от Ctrl+X
, Ctrl+C
и Ctrl+V
очень тяжело, да и нет смысла этого делать.
Терминология
Буфер - аналог вкладки с документом в других тектовых редакторах и IDE. Так же это область, куда выводятся сообщения плагинов или самого редактора.
Минибуфер - самый маленький буфер, расположенный в нижней части окна EMACS. В него вводятся различные команды. Для входа в него следует использовать комбинацию клавиш [M-X]
без установленного и включенного пакета ergoemacs-mode, либо [M-A]
. После ввода команда запускается на выполнение нажатием [Enter]
(в документации EMACS эта клавиша называется [RET]
)
Пакет - аналог плагина в других редаторах и IDE. Представляет собой сценарий или набор сценариев на языке EMACS Lisp. Часть пакетов является встроенной в редактор и поставляется вместе с ним, другие нужно скачивать из репозитриев. Отметим, что сейчас практически не используется способ установки пакета ручным клонированием репозитория с GitHub, далее под репозиториями будут пониматься специализированные хранилища пакетов.
Основной режим - определяет поведение EMACS для буфера. От этого режима зависит поведение различных клавиатурных комбинаций и набор доступных дейстий. Например, при написании этой статьи я использую web-mode
, что даёт подсветку синтаксиса, автоматическое форматирование и применение Emmet для создания разметки. Основной режим может быть лишь один (имеется пакет, позволяющий включить сразу несколько основных режимов для одного буфера, но я им ни разу не пользовался).
Дополнительный режим - в то время, как основной режим может быть лишь один, дополнительных режимов можно включить столько, сколько нужно. Например, сюда относятся средства проверки орфографии, возможность автокомплита, автоформатирование кода и т.д. Большая часть пакетов для EMACS работает именно в дополнительном режиме.
Первоначальная настройка
Настройка EMACS может производиться как минимум двумя способами.
Настройка через правку файла конфигурации .emacs
Основной файл настроек EMACS называется .emacs
и располагается в домашнем каталоге пользователя. В случае с Windows это как правило каталог вроде этого:
C:\Users\xPhoenix\AppData\Roaming\.emacs
Однако, можно переопределить домашний каталог для хранения настроек (важно понимать, что файл .emacs
станет вашей прелессссстью, которую вы будете оберегать и лелеять), создав для текущего пользователя системную переменную под именем HOME
, и указав в ней путь к каталогу, который следует считать домашним для EMACS (возможно, работает и для других программ из мира Linux, не проверял). У меня эта переменная выглядит так:
D:\xphoenix\
Кроме этого файла EMACS при работе создаёт так же создаёт в домашнем каталоге папку .emacs.d
. В ней будут храниться скачанные пакеты, сниппеты, файлы .desktop
и т.д. Не надо его удалять!
В любом случае, в наш .emacs
следует поместить как минимум вот эти строки:
(defalias 'yes-or-no-p 'y-or-n-p)
(setq package-archives '(
("elpy" . "http://jorgenschaefer.github.io/packages/")
("gnu" . "http://elpa.gnu.org/packages/")
;; ("melpa" . "http://melpa.milkbox.net/packages/")
("melpa-stable" . "http://melpa-stable.milkbox.net/packages/")
("org" . "http://orgmode.org/elpa/")
))
Первая строка указыает на то, что вместо ввода строк yes
и no
в ответы на запросы системы можно просто нажать [y]
или [n]
соответственно.
Чуть ниже идёт указание репозиториев для поиска пакетов. Репозиторий MELPA очень популярен и в Интернете, вы будете часто встречать отсылки именно к нему, но использовать его опасно, т.к. пакеты туда попадают прямо из ветки master с GitHub. Поэтому я предпочитаю MELPA-STABLE. Пусть пакеты старые и их гораздо меньше, зато ничего не сломается при очередном обновлении. Впрочем, в редких случаях я пользуюсь MELPA, например, если пакета вообще нет в STABLE или тот, что есть, слишком старый. Так же существует репозиторий MARMELADE, но я не вижу смысла его использовать, т.к. некоторые пакеты в нём даже более старые, чем в MELPA-STABLE.
Настройка через customize
В одной из версий EMACS в стандартную поставку стал входить пакет sustomize
. Просто выполните одноименную команду, и попадете в буфер, где будет поле для поиска и множество гиперссылок для перехода к нужным настройкам. Отмечу лишь, что настройка некоторых параметров через customize
конфликтует с ручной правкой .emacs
, однако, в ряде случаев является более удобной. Некоторые параметры EMACS можно настроить только ручным редактированием .emacs
, в customize
вы просто не найдёте нужного раздела.
Установка пакетов
Указав в вашем .emacs
репозитории так, как указано выше, перезапустите редактор (можно сделать и без перезапуска, но не буду усложнять) и выполните команду list-packages
. Откроется буфер, содержащий список пакетов в доступных репозиториях. Выбор пакета для установки осуществляется нажатием клавиши [I]
, отмена выбора - [U]
, пометка на удаление - [D]
. После того, как будет выбрано, что делать с пакетами, следует нажать клавишу X
для запуска операций. EMACS установит и при необходимости выполнит компиляцию нужных пакетов.
Есть несколько пакетов, которые я настоятельно рекомендую к установке.
- auto-complete - предназначение ясно из названия. Через него работают многие другие пакеты, например,
jedi
. - autopair - автоматически закрывает скобки
- company - ещё одно средство для автокомплита, через него работают некоторые пакеты, которые не работают с
auto-complete
- emmet-mode - незаменимое средство для верстальщиков. Рекомендую ставить из MELPA, т.к. в STABLE очень старая версия, которая работает хуже и многого не умеет.
- ergoemacs-mode - пакет, устанавливающий комбинации клавиш, удобные для использования людьми, а не Ричардом Столлманом. Подробное описание клавиш здесь.
- flycheck - модуль проверки чего угодно на лету. На самом деле по-тихому вызывает имеющиеся в системе средства проверки и статического анализа кода. Имеет возможность конфигурирования того, какие средства и с какими параметрами следует использовать. Является более новым и прогрессивным в сравнении с загнивающим
flymake
. - jedi - автокомплит для Python-разработчиков. Настройка данного пакета достойна отдельной статьи.
- js2-mode - расширенный по сравнению с
js-mode
режим правки JavaScript-кода. Ставитьjs3-mode
не рекомендую, т.к. проект давно загнулся. - less-css-mode - не вижу смысла объяснять назначение данного пакета.
- monokai - тема из Sublime Text 2, пожалуй, лучшая, что мне приходилось видеть.
- neotree - порт плагина NerdTree из VIM, отображает слева (или справа, настраивается) дерево каталогов и файлов. Лучше ставить из MELPA.
- rainbow-mode, rainbow-delimiters - в паре подсвечивают скобки и другие элементы разными цветами, позволяет легко находить ошибки типа "Забыл закрыть скобку".
- web-beautify - доступен только из MELPA, позволяет автоматически форматировать JS, CSS и HTML-файлы. Для работы требует установленный в системе NodeJS и его пакет
web-beautify
. - web-mode - добавляет в EMACS возможность редактировать файлы XML, HTML, XHTML и др. Обеспечивает подсветку синтаксиса и т.д.
Комментариев нет :
Отправить комментарий