Начало пути к Emacs

На каникулах я решил осилить GNU Emacs. Успешно.

К изучению этой системы меня подтолкнули доводы ESR в TAOUP в пользу Emacs.

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

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

В последнее время vim, конечно, очень быстро и круто развивается, к нему пишут кучу скриптов и дополнений, приближающих возможности vim к Emacs. Vim обрастает и дополнениями на своём скриптовом языке, и новыми встроенными возможностями. Часто чморят Emacs за мифическое отступление от традиций Unix и кивают на vim в качестве труъ-редактора. На деле же vim плавно теряет самобытность и превращается в Emacs с модальным интерфейсом; модальность же vim’а при увеличении количества одновременно используемых расширений и дополнительных фенек перестаёт играть в пользу юзера, так как все команды управления завязать на /[A-z]*/ невозможно и запомнить подобные команды, когда они не связаны с базовой работой с текстом, не легче, чем длинные «цепи» из Emacs. А сочетания на CTRL есть ныне и в vim.

Emacs гораздо более труъ, чем современные vi-потомки, ибо является лишь средой для выполнения произвольного elisp-кода и предоставляет бòльшую гибкость просто на своём конструктивном уровне.

Сила Emacs в том и состоит, что Emacs’а на самом деле нет.

Elisp’а не надо бояться и кивать на использование Python и Perl в качестве скриптовых языков в vim: использование elisp во многом обусловлено историей развития Emacs, да и не так он сложен, как кажется сначала.

Для Emacs куча дополнений. Огромная куча.

  • cc-mode сильно помогает при редактировании сорцов на C/C++. Можно наконец-то положить болт на оформление кода, ибо все переносы строк и отступы во всяких разных ситуациях расставляются автоматом согласно выбранному стилю (в комплекте штук пять самых популярных).

  • различные code browsers, если очень хочется.

  • аналога AUCTeX для правки документов на LaTeX в vim нет. В нём, например, можно включить предпросмотр отрендеренных формул прямо в окне редактора.

  • в Emacs есть единая морда к разным отладчикам.

  • в Emacs есть единая морда к CVS и SVN и свои морды к другим системам, включая отличную Xtla для работы с GNU Arch. Интересен проект DVC по разработке единого и прозрачного для пользователя Emacs-интерфейса к различным распределённым системам контроля версий (darcs, git, arch, mercurial).

  • есть приятный org-mode, предоставляющий средства для работы y с иерархическими списками заметок и TODO, на которые можно вешать тэги и делать ссылки на любые типы данных, можно публиковать написанное в кошерные веб-страницы, внедрять LaTeX-формулы и электронные таблицы. Ещё было бы здорово, если бы можно было связать хотя бы аутлайны из org-mode как-то с моим палмом, только пока ничего не придумал. Вроде бы Progect мог подойти в качестве части для КПК - простая и свободная программа, однако нет никакого кондуита для экспорта баз Progect с КПК на большой компутер в приличный формат. А хранить большие TODO на компьютере не так удобно, как всегда иметь их под рукой на КПК.

  • есть весьма мощный почтовик/ньюсридер Gnus. NNTP, POP3, SMTP, IMAP, RSS, mbox, интеграция со всеми спаморезками и некоторыми другими расширениями (например, DVC).

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

Я не сказал о львиной доле интересных дополнений для Emacs =\

В общем, для Emacs конечно пока больше всяких вкусностей и полезностей (во всяком случае, для меня) и это, наверное, главная причина, по которой его стоит попробовать.

Входная сложность Emacs гораздо выше, чем у vim. То есть писать текст в нём можно через пару минут после знакомства, но использовать всю ту груду дополнительных средств учить придётся долго (поначалу возможно будут и вовсе непонятны некоторые концепции Emacs или терминология (например, yank в vim значит «скопировать», а в emacs - вставить)).

Возможно, неплохим началом после некоторого освоения будет набор M-x customize и изучение имеющегося там. Чтобы эффективно использовать Emacs, нужно знать, что в нём есть :) Частым вопросом в gnu.emacs.help является «Как и для чего можно использовать Emacs?». Не уверен, что для уверенного владения Emacs’ом обязательно нужно знание elisp, скорее немного здравого смысла и умение читать.

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

Да поможет вам EmacsWiki.

git