Skip to main content 41q.ru

Emacs

Emacs или Vi

Есть классический vi, а vim это vi improved. Имхо, расширять консольные (а Имакс все-таки, консольный) текстовые редакторы до состояния интегрированной среды - это слишком.

мем про троллейбус из буханки хлеба и пары спиц

Если выбирать из этих двух (Имакс или Ви), то вопрос в манере работы - манере юниксовой или манере работы с интегрированной средой.

Если работаешь в юниксовой манере: используешь оболочку (Bourne Shell, Zsh, Korn shell), а там man, less, more, tail - то знание горячих клавиш и команд vi пригодится. Плюс, множество утилит используют те же хоткеи (hjkl). Для Имакса же надо заучить собственные горячие клавиши. Либо ставить evil-mode.

Имакс - это не про текстовый редактор, а про редактор, плюс:

  • tramp для работы с удаленными машинами (на удаленных машинах должен быть гнушный bash)
  • dired, для работы с файлами
  • читать мануалы через info
  • org-mode чтобы вести заметки, дневник, календарь
  • читать почту
  • magit - для работать с гитом
  • а что требует командной оболочки - запускать через eshell

Полный Имакс!

Это мысль не моя, если что.

Но, имхо, Имакс плох и как редактор и как платформа.

Emacs как редактор текста

Например, вставить новую строку над курсором - из коробки нет горячей клавиши.

Вообще, горячие клавиши Имакса ну ооочень своеобразны. Точнее, они мнемоничны (f - forward, p - previous), но не эргономичны. И не пригодятся нигде, кроме Имакса.

Да, можно написать свою функцию для перемещения курсора на строку выше и вставки новой строки там. И повесить её на любую клавишу.

Да, можно врубить CUA-mode, и получить простые Ctrl-C, Ctrl-V.

Можно, вообще, поставить дополнительный evil-mode в Имакс чтобы получить лучший Вим, чем сам Вим. Можно поставить пакет для ленивого (fuzzy) поиска нужных команд. Но это всё пердолинг. О нём ниже.

Emacs как платформа

Как у платформы, у Имакса есть значимые недостатки:

Имакс однопоточный

Зависла исполняемая команда - завис весь редактор, со всеми буфферами.

Пример из жизни. У меня при подключении к удаленной машине через Трамп завис весь Имакс. В итоге, убив Имакс я потерял где какие буфферы были открыты в каких фреймах. (sidenote: Какие фреймы? А в терминологии Имакса фреймы - это окна. А во фреймах окна, которые вкладки. А вот сами вкладки - это уже те самые буфферы.)

Даже в графическом режиме, это все ещё консольное приложение

Компоновка интерфейса в консоли и в окне одинаковая. Единственное отличие - в терминале есть псевдографические элементы, а в графическом режиме это полноценные графические (кнопки, полосы прокрутки, вот это всё).

Беды с прокруткой содержимого:

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

Да, всё чинится, а проблемы в устаревших дефолтах. Но это надо “чинить”.

Имакс устарел

“Чинить” - не просто так в кавычках, а потому что Имакс не сломан. Имакс устарел. А менять устаревшие дефолты не будет, потому что это сломает кучу написанного поверх кода.

xkcd - EVERY CHANGE BREAKS SOMEONES WORKFLOW.

Современному пользователю, живущему в графическом окружении, Имакс не даёт никаких преимуществ. Зато имеет кучу наследственных “особенностей”. Эти особенности - не забытое кун-фу древних мастеров, не горшочек с золотом на другом конце кривой обучения. Это всё переизобретение того что уже есть.

Dired

Основная идея Диреда в том, что директория выглядит как вывод команды ls -l в текстовом редакторе и ты можешь ходить по-ней как по-тексту. В этом вообще фича Имакса как платформы.

Но чем это принципиально лучше какого-нибудь терминального файлового менеджера (ranger, lf, nnn) я не понял.

Особенностью преподносится возможность отредактировать этот текстовый буфер (поменять права, создать новые папки, удалить старые, переименовать существующие), сохранить будто-то бы это текстовый файл - и Dired сам всё сделает. Я эту возможность не оценил, поскольку я в принципе не припомню, чтобы у меня возникала такая потребность в массовом изменении файлов. А поменять что-то у отдельный файлов или директорий проще через привычные chown, mv, rm и проч.

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

Dired + Tramp

в Имакс можно смотреть директории на других машинах, например, через ssh. Открыл директорию, в ней открыл файл, отредактировал и сохранил. Есть возможность запустить там же команду. Красиво, элегантно. Но я столкнулся с проблемой.

Или было медленное соединение, или на удаленной машине терминал выдавал Трампу что-то неожиданное для него - и в итоге зависал весь Имакс на минуту, чтобы потом показать неинформативный текст о том, что не удалось подключиться.

К тому же, очевидно, что этот функционал не уникален. Есть псевдографический гнушный mc (Midnight Commander). В нем можно ходить другие машины, копировать туда-обратно файлы и даже редактировать во встроенном редакторе.

Org-mode

Написал отдельно, в [[Ведение заметок|сравнении]] заметочников.

Shell и терминал Имакса

Внутри Имакса есть свой эмулятор терминала. Можно пользоваться системной оболочкой изнутри Имакса. Можно бегать курсором по выводу предыдущей команды. Классно. Но это базовый функционал любого эмулятора терминала. Это можно сделать и в терминале через мультиплексор (tmux).

Info

Для чтения документации приложений от Гну может использоваться утилита Info, которая представляет собой упрощенный Имакс. И в Имакс можно читать документацию к самому Имакс и к другим приложениям - это одно и то же. В теории, конечно, здорово иметь под рукой локальную копию документации и удобные средства её просмотра. Но я давно предпочитаю просто вбить в поисковик то что ищу и читать документацию через браузер. Гораздо удобнее и привычнее.

Magit

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

Чтение почты, всякие rss-клиенты, и проч и проч

Это даже как-то не серьезно обсуждать. Почта, к слову, открывается как текст, а не как html. Должно быть забавно.

Хакинг

Да, можно назначить горячие клавиши из Вима (evil-mode). Есть и другие раскладки горячих клавиш (xah-fly-keys). Но evil-mode работает только при редактировании текста. В Диреде, например, горячие клавиши останутся прежними. Надо перебивать.

Впрочем, есть уже готовые сборочки.

Сборочки Имакса

Спорт здоровому не нужен, а больному противопоказан.

Речь о Doomemacs или Spacemacs. Преднастроенные конфиги, чтобы:

  • привести Имакс к современному виду (темная тема, шрифты, эмодзи)
  • донести мастхэв-пакеты
  • перебить дефолты на адекватные

Но они вместе с этим всё усложняют. Теперь надо искать не как сделать что-то в Имаксе, а как сделать что-то в Думимаксе. Ответов в сети, очевидно, на порядок меньше или нет вообще.

Рекомендации от опытных имаксеров сводятся к тому, чтобы:

  1. попользоваться ванильным имаксом
  2. познакомиться с имаксовым лиспом
  3. и уже потом, ставить пакеты по-отдельности, собирая свою сборочку

Итого - сборочки только усложняют вход для новичка, а у опытного имаксера есть уже свои дотфайлы.