Если уж быть совсем-совсем кратким, то встречайте Spacemacs. Это такой настроенный Emacs с клавиатурными сочетаниями от Vim.
Иногда я снимаю шапочку управленца IT-Premium и одеваю другую свою шапочку из фольги и становлюсь программистом. У каждого программиста, мой дорогой читатель, есть второй инструмент по важности после головы – это редактор кода.
Spacemacs
Каким должен быть хороший редактор для кода? Удобным, быстрым, с подсказками и свистелками? Но, конечно же, самый хороший инструмент это тот, которым ты умеешь пользоваться. Я тот самый парень, который все время пробует новые и новые инструменты, например:
С каждым из этих инструментов я провел довольно долго времени и, думаю, что понимаю их плюсы и минусы.
Sublime Text мне очень нравится за скорость работы, она просто потрясающая! Очень быстрый переход fuzzy search по названию файла, множество интересных пакетов, таких как Git Gutter. Хорошо продуманный редактор.
RubyMine это, конечно же, полноценная IDE. Умное дополнение при наборе текста, доступ к записям базы данных и тому подобные фишки. Мощно и хорошо, но довольно долго загружается из-за Java и обладает повышенными требованиями к расходу памяти.
LightTable, безусловно, должен быть в вашем списке редакторов для ознакомления. Пожалуй, это видео и этот пост о редакторе LightTable стоят тысячи слов. Интерактивная разработка с просмотром результатов выполнения кода, который ты только что набрал захватывает дух. Интересный факт — редактор написан на молодом ClojureScript, который, в свою очередь преобразовывается в Javascript и запускается через Electron.
Vim драматически увеличивает скорость набора и редактирования текста. Но качественный скачок в скорости набора произойдет после запоминания комбинаций на уровне мышечной (пальцевой) памяти. Редактор очень быстро запускается и достаточно хорошо расширяется всевозможными плагинами (например, Rails). Но писать свои плагины для расширения функциональности лично для eменя оказалось нелегким испытанием. Еще одно достоинство vim — он есть в каждом дистрибутиве Linux и часто в качестве редактора по-умолчанию.
Вся мощь Emacs мне стала понятна только после моего увлечения Clojure, а значит и лиспом, а значит и функциональным программированием. Именно отсутствие опыта работы и понимания лиспа читателем, скорее всего и есть той причиной, которая отпугивает потенциального пользователя от Emacs. Ведь отличительная его особенность – в создании комфортной среды для разработки через собственную настройку и дополнение полезным функционалом, таким, например, как управление docker контейнерами. Сколько задач, столько и вариантов конфигурации. Однако, что меня очень удручало при работе с Emacs это клавиатурные сочетания, которые приняты по-умолчанию в редакторе. Беда в том, что подавляющее большинство сочетаний используют Ctrl, даже банальная команда, открыть файл — Ctrl X+Ctrl F активно задействует один палец-мизинец, который приходится неестественным образом выворачивать. Поэтому первая рекомендация для emacsеров это заменить Ctrl на Caps Lock. Но даже перевод Ctrl на Caps Lock не очень спасает ситуацию и я время от времени стал чувствовать боль в кисти в районе мизинца, или как это называют по-научному RSI. Многие для уменьшения болей стали переназначать клавиатурные сочетания на более дружелюбные из Vim. Так появились многие пакеты, включая и популярный evil. После довольно продолжительного использования evil стало понятно, что прийдется у многих пакетов переназначать клавиатурные сочетания вручную. Оказалось, что такими же задачами оказалось озабочено достаточно много энтузиастов, которые и создали Spacemacs. По-сути это все те же плагины, но с клавиатурными сочетаниями близкими к Vim, активация которых начинается с пробела, отсюда и название. Интересен также принцип добавления и распространения конфигурации – ваши сделанные настройки желательно добавить в pull request чтобы их рассмотрели на предмет включения в основной дистрибутив spacemacs. Так происходит накопление настроек, которые делают коллеги и количество переходит в качество.
Успешно использую Spacemacs сам и другим рекомендую.