Много раз слышал, что Intellij IDEA - очень хороший IDE для разных целей. На последней Erlang Factory в Bay Area познакомился с разработчиком
(Сергеем Игнатовым), который в IDEA допиливает поддержку Erlang, он тоже хвалил эту замечательную IDE.
И я решил попробовать, заставил 2 недели сидеть только под IDEA.
Краткое резюме - мне не очень подходит. Скорее всего из-за того, что я слишком хорошо настроил себе vim, и понимаю, как быстро там можно делать многие вещи.
Минусы:
- есть микроскопические задержки между нажатием клавиши и реакцией. Очень неприятно. Проявляется чаще всего во всяких рюшечках (выделения цветами последних изменений, всяких подчеркиваний и выделениях цветом - т.е. то, что мне не нужно совсем).
- не все полезные действия сделаны в виде шорткатов, но когда начинаешь определять их - постоянно пересекаешься с уже существующими. И не знаешь, вот полезная вещь, понадобится еще или нет? А все из-за перегруженности интерфейса.
- иногда невозможно перейти на соседнюю вкладку (shift-cmd-[ или shift-cmd-]), фиг знает, почему. Она помечается синеньким шрифтом, и хз, что это значи. Я пытался посмотреть на агенду, но не преуспел. Аналогично пытался нагуглить, но не нашел ответа.
- устаешь настраивать конфигурации тестирования для подпроектов в проекте (для erlang apps, для тех, кто в теме). Каждый раз тестирование пытается минимизироваться до текущей функции в текущем модуле, а если хочешь проверить весь модуль - нужно ручками убирать эти ограничения. Зашел в другой модуль - опять волшебная комбинация кнопок, опять мышкой переходишь в нужное поле, опять правишь - и так постоянно.
- попробуйте без поллитра разобраться, как скачать зависимости и откомпилять rebar проект
- как-то раз целый вечер пытался разобраться в “проблемах проекта”, которые по cmd-; видны в самом низу. Не смог побороть какие-то некорректные проверки в библиотеках, даже забыл уже какие были проблемы. Потому что через недельку они исчезли сами.
- Перегружен интерфейс, при этом есть стопятьсот комбинаций, которые должны облегчить жизнь, но тяжело заучиваются.
- Не умеет пока переходить на определение функции, если функция написана не в виде
module:foo()
а в виде
apply(module, foo, [])
думаю, они должны поправить в ближайшее время, очевидная вещь. - Не очень удобно анализировать изменения относительно HEAD git-репозитория. ":Gst" в fugitive делает его на раз-два.
Плюсы:
- Удобно нажимать кнопку “проводить последнее тестирование при любом изменении”, особенно, когда пишешь юнит-тесты. Круть! Жаль, похоже, подобное не сделать в vim
- Удобно открывать любой файл проекта по shift-cmd-o (примерно то же самое, что “:ts ” в vim.
- Удобно делать поиск по проекту (cmd-shift-f). Почти так же удобно, как :Gdiff в vim fugitive.
- Удобный vim-mode, почти все горячие комбинации покрывают. Есть неудобства, конечно, например, при исправлении “%s///gc” - он подтверждения спрашивает, но не показывает, что же он хочет заменить ;)
- Удобно переходить на определение функции по ctrl-], работает чуть лучше, чем в виме:
Например, у вас есть 2 функции mod1:foo() и mod2:foo(), и вы находитесь в модуле mod2, при этом стоите курсором на вызове mod1:foo(). Переход на определение функции в vim переходит на локальное определение foo (по-умолчанию для ctags). Переход на определение в IDEA перекидывает на mod1, это очень удобно. Хочу так же в vim, это можно сделать? - Удобно смотреть дерево изменений в VCS (git). Примерно то же самое, что делает
`log --graph --pretty=format:"%Cred%h %Cgreen%an%Creset %s %Cred%d"`
Итого, плюсы IDEA перед vim - только в тестировании при изменении и переходе на определении функций
При этом минусов очень много, начиная с неоптимальности моих действий, и заканчивая какими-то вещами, которые бесят своей непонятностью, типа невозможности переключиться на соседнюю вкладку (возможно, это настраивается, но эти странные дефолты - зачем они?).