Використовуємо Vim як IDE для Erlang, Записки програміста
Використовуємо Vim як IDE для Erlang
Ось уже понад три роки я пишу код виключно у vim. Не дано мені зрозуміти, що всім так подобається в цих Emacs, Eclipse, IntelliJ IDEA та інших. Навіщо вони потрібні, якщо старий добрий vim (який, я вважаю, вам все одно іноді доводиться використовувати) можна за п'ять хвилин перетворити на хорошу, придатну IDE для будь-якої мови?
Візьмемо, наприклад, розширення vimerl. Встановлюється воно так:
Також нам знадобиться пакет erlang-manpages:
/.vim/vimerl/doc/ :help vimerl
Тепер у нас є автодоповнення для імен функцій, скористатися яким можна, натиснувши Ctr+X, Ctr+O у режимі редагування:

Vimerl автоматично розставляє за вас відступи. Виправити відступи у вже написаному коді можна, виділивши його і натиснувши = . Щоб прочитати довідку по модулю, наводимо курсор на ім'я модуля та натискаємо Shift+K. Також ми можемо створювати скелети модулів. Наприклад, команда ErlangGenServer створює скелет gen_server'а. При цьому ім'я модуля автоматично визначається ім'ям файлу.
Допустимо, нам потрібно швидко перейти до визначення функції, на якій зараз знаходиться курсор. Для вирішення цього завдання нам знадобиться ctags (той, що встановлений у системі за умовчанням, швидше за все, є поганим, непридатним ctags):
Індексуємо файли з вихідним кодом:
Перезапускаємо vim або просто говоримо:
Тепер, щоб перейти до визначення функції, наводимо курсор і натискаємо Ctr+]. Для повернення назад на стеку переходів натискаємо Ctr+T. Щоб відкрити функцію в новій вкладці, потрібно натиснути Ctr+W, Ctr+], Ctr+W, Shift+T. Щоб постійно не вводити цю досить довгу послідовність, прописуємо в
Однак половина мощі vimполягає у можливості легко використовувати його спільно зі сторонніми утилітами. Мені не потрібно, щоб у vim був пошук за файлами, інтеграція з системою керування версіями або якоюсь системою складання, тому що я можу сказати :!grep -rE pattern , :!git commit -am'. ' або :! rebar compile . А у поєднанні з віконним менеджером i3 та оболонкою zsh виходить просто шикарне середовище для розробки.
Виявилося, що (1) vimerl набагато зручніше встановлюється за допомогою Pathogen і (2) сам vimerl можна брати з цього репозиторію на GitHub. Vimerl вміє підсвічувати рядки, які містять помилки. Отримати список помилок можна командою :cl. Перехід між рядками, що містять помилки, зручно за допомогою вікна з помилками, яке відкривається командою :copen . Крім vimerl є чудовий плагін erlang-motions, обов'язково ознайомтеся з ним! Також при програмуванні Erlang ви просто повинні використовувати sync. Тільки не забудьте в корені репозиторію завести run.sh, тому що в embedded режимі (див. також тинц) sync не працює.