После очередного dotfiles bankcruptcy (когда решил перенастроить всё как надо с нуля) кинул взгляд в стан Emacs. Посмотрел гифки, скриншоты, плагины и возникло ощущение, что я многое недополучаю в (neo)vim:
- Emacs as daemon или «буферы отдельно, окна отдельно» - очень нужно для мультимониторной конфигурации и внешнего тайлинга;
- Semantic и его производные произвели вау-эффект: stickyfunc, semantic-refactor;
- Кажется TRAMP удобнее vim+tmux over ssh для разработки в больших долголинкующихся проектах на толстых разработческих серверах, плюс не нужно синхронизировать конфиг на несколко хостов;
- В целом поддержка языков выглядит вкуснее аналогов vim даже в диапазоне одного проекта (cquery);
- Интересная идея использовать
dired
для массового редактирования и (условно) атомарного коммита изменений метаданных ФС; - Интересная идея с
minor-mode
вродеfollow-mode
иdisaster
.
Но на деле всё вышло не так просто. Сначала хотел настроить всё своими руками, чтобы лучше понимать происходящее под капотом. Столкнулся с недопониманием Emacs Lisp. В vim хоть и свой недоязычок, но можно быстро проверить однострочник в minibuffer с автодополнением, а затем прописать его вvimrc
. Попутно почитать документацию в:help
. В Emacs так не получилось, да и Lisp это не про однострочники. Вообщем - не пошло.
Забил, поставил Spacemacs по рекоммендациям «как vim только лучше», прописал нужные layers - и вроде всё относительно сразу завелось с полпинка, но криво/непонятно/не-так-как-я-хочу и совсем неясно как научиться его кастомизировать. В Emacs Manual всё примеры основаны на key chords, а я принципиально считаю модальный режим лучше и не хочу тратить мышечную память на ещё один набор хоткеев. Возникла жуткая ломка по vim: -
dired-mode
иevil-mode
пересекаются, поведение непредсказуемо как выход из vim для новичка; - регулярки всё равно не как в vim, например неполучилось использовать «context \zsXXX\ze context» в substitute;
-
:cd ~/some/dir
,man something
игнорируют параметр, заставляя меня вводить отдельно каждый уровень иерархии в Helm, когда мне проще~/src/project
набрать в стиле readline сtab
иC-W
; - FZF мне нравился больше Helm, опять же - нигде не работают привычные байндинги readline;
- логично было бы заменить имаксом tmux и эмулятор терминала для удобной копипасты, но опять проблема с привычными хоткеями и интеграцией в evil. Ещё их 3 вида, все написаны на лиспе и есть проблема с тормознутостью и неправильной обработкой escape кодов и цветов;
- Тут, похоже, не практикуется хорошо структурированный
:help plugin-name
как в vim. Авторы плагинов, видимо, предлагают мне сразу изучать их код на emacs lisp; -
taskwarrior + vimwiki + taskwiki
для меня понятнее и прощё чем монстрorg-mode
. У последнего нет API к списку задач, непонятно как их создавать/изменять из хуков мониторинга, например? Нормальной интеграции taskwarrior в заметки org-mode как делает taskwiki я не нашёл.
Получилась простыня. Вопрос - как всё же правильно готовить Emacs? Как вы пересели с Vim на Evil Mode, как перестали бояться Emacs Lisp? Используете отдельный эмулятор и мультиплексор терминала или встроенные в Emacs? Или консольный Emacs внутрь tmux проинтегрировали аля kakoune?