Comments 46
пользуюсь ванила емаксом с С++, приучился к сборке проекта из консоли, научился настраивать проект, в емаксе использую eglot+company и макрос для создания двух файлов, полёт нормальный, емакс вообще не перенастраивал
Так и для чего выбирать Emacs большинству?
GNU Emacs уже много лет, и за это время он пережил не один десяток других редакторов и IDE. Скорее всего, в ближайшие годы он переживёт их ещё немало. Это значит, что ваше время, потраченное на его освоение и написание
init.el
, не пропадёт даром.
Но пользователи Windows и Mac уже более 30 лет используют привычные сочетания клавиш в разных редакторах и они точно так же уверены, что и в последующие 30 лет, если клавиатуры будут существовать, ничего принципиально в этих сочетаниях не изменится. То есть они уже потратили своё время на освоение приёмов работы с редакторами и не хотят ничего менять.
У GNU Emacs отличная обратная совместимость. Вы называете это говном мамонта и legacy. Я называю это стабильностью. Мы не одинаковы.
Здесь вы сами противопоставляете себя большинству :) Но, справедливости ради, не очень понятно, что именно 20-30-летней давности понадобится современному пользователю?
У GNU Emacs отличная документация. Можете ли вы то же самое сказать про свою IDE?
Так большинство приёмов работы интуитивно понятны как раз благодаря привычности управления, знакомому по опыту работы с другими программами. А вот то, что не понятно, есть или в туториалах, или в гугле / чатгпт.
GNU Emacs быстр, потому что нативно собирается под большинство широко распространённых платформ. У Sublime Text и VS Code есть поддержка Linux, macOS и Windows. Что насчёт *bsd-систем? HP-OS? Solaris?
Многим хватает скорости VSCode, кто-то сидит в IDE на джаве. Да и тот же Sublime или TextMate — довольно шустрые. Поддержка BSD, HP-OS, Solaris? А кто-то с ними вообще сталкивался?
GNU Emacs — современный редактор, находящийся в активной разработке. Не так давно туда добавили поддержку TreeSitter, Emoji и рендеринг шрифтов с использованием возможностей видеокарты. Как дела у пользователей Notepad++? Что там с TreeEditor (помните такой?)?
Вот кажется, что пользователи Notepad++, которым позарез нужны были эмодзи, перешли на VSCode с тонной плагинов :) TreeSitter им вряд ли нужен, потому что у них есть LSP. И, возможно, с поддержкой Yaml у них дела обстоят лучше.
В моем эмуляторе терминала сочетания клавиш такие же как в emacs: Я могу прыгать в начало строк через "C-a" и в конец строки через "C-e", двигаться по словам с помощью "M-f" и "M-b" - легко запомнить: Alt+forward, Alt+Backward. А если я нажму Alt+D то я могу удалить слово справа от курсора, так же легко как могу удалить слово слева от курсора нажав Alt+Backspace.
Потому что эти комбинации пришли к нам из прошлого, когда клавиатуры могли не иметь BackSpace приходилось нажимать Ctrl+h, потому что его нажатие выдавало тот же код 127. И все системы управления были построены так, чтобы пользователь мог иметь минимально поддерживаемый набор клавиш, но при этом вводить любые комбинации, которые можно выразить. И сейчас если я столкнусь с необычной клавиатурой, например Sofle или вот Happy Hacking Keyboard - она тоже необычная, имеет Del но нет Backspace - я легко могу работать в емаксе не меняя своих привычек и мышечной памяти. И я все могу сконфигурировать под себя. даже в том случае если мне оторвало пальцы и теперь я пользуюсь педалями и рычагами. Если завтра мне придется управлять дроном по приборам путем посылки ему команд - я смогу сделать это из емакса написав минимум скриптов для визуализации приборов и отправки управляющих воздействий.
Емакс - это не просто редактор. Это собственная user-mode OS с невероятными возможностями кастомизации. Нет ничего похожего на него среди распространенных IDE - они все немного кастрированные. И это свободное ПО
Так не все хотят заниматься бесконечной кастомизацией редактора.
могу прыгать в начало строк через "C-a" и в конец строки через "C-e", двигаться по словам с помощью "M-f" и "M-b" - легко запомнить: Alt+forward, Alt+Backward. А если я нажму Alt+D то я могу удалить слово справа от курсора, так же легко как могу удалить слово слева от курсора нажав Alt+Backspace.
Ну не знаю, насколько это приятно и/или удобно. Ну вот на (почти) всех моих клавиатурах всё то же самое легко делается стрелками (+ ctrl) и Backspace/Del
Добро пожаловать в увлекательный мир качественных 60% клавиатур без курсорных стрелок:

Только подрисованные под буквами стрелки ни в пи для Emacs, ни для vi.
Вы сами себя ограничили кастрированной клавиатурой.
На стандартных все это легко делает Home, End стрелками и их сочетаниями с shift и ctrl.
Вы получается сами создали себе проблему и героически решили её через такой же нестандартный редактор.
Таки не спешите записывать *BSD в мертвое ненужно :))
У EMACS много фундаментальных проблем и как редактор он в 2024 году отметается сразу. Чтобы вводить бесконечные сочетания клавиш нужно играть на фортепиано два часа ежедневно. От редактора сейчас (СЕЙЧАС, это фундаментальные изменения, их невозможно пережить, их можно только принять к сведению исполнению) нужны LSP и Tree Sitter, после чего все редакторы примерно одинаковы.
И основной разлом прост - хочется да любится тыкать в отладчик - тогда IDE, отнюдь - Neovim, Helix… редактор уровня EMACS, без AI да рефакторинга, как оказалось, пишется без проблем. Да, без проблем сейчас потому, что когда-то умные люди писали EMACS, но много ли любителей палеопрограммирования выжило?
Я бы понял апологетику EMACS если бы пелось про Lisp и его дивные функциональные возможности и интеграцию с редактором. Я знаю Есть совсем немного разумных способов использования компьютера в личных целях - Node.js, Racket, Julia, Python. Теоретически, EMACS может быть в этой группе если на пару с компьютером нужно работать с текстом и это можно воспеть, но как часто такое бывает - я не знаю.
В статьях по соседству подобным образом воспевается, на сколько я понимаю автора, ещё менее удачный диалект Lisp, только там вместо текста и EMACS применены изображения и GIMP.
Это scheme - "ещё менее удачный диалект Lisp"? 😱
А emacs прекрасен. И да, в первую очередь елиспом, точнее его интеграцией. Знание лиспа, даже поверхностное, раскрывает мощь емакса.
Есть совсем немного разумных способов использования компьютера в личных целях - Node.js, Racket, Julia, Python
Ну ладно Racket, а остальное зачем? Что это за "разумные способы использования"?
Не кормите тролля. Тут слишком много сверхкатегоричных высказываний: от палеопрограммирования до неудачных диалектов лисп. Посмотрим сможет ли Автоматон написать редактор уровня хотя бы Notepad++
Это scheme - "ещё менее удачный диалект Lisp"? 😱
Там не Scheme, там недовариант ласково именуемый автором «тинисхема».
Ну ладно Racket, а остальное зачем? Что это за "разумные способы использования"?
Не просто использования, а использования в личных целях. То есть тогда, когда программа пишется и используется одним и тем же лицом или группой лиц по предварительному сговору в особо извращённой форме. Основное отличие - в этом случае не нужно создавать приложение и/или превращать в сайт. Теперь должно быть понятно чем разумные способы отличаются от неразумных. Если таки не понятно - запускаем Андроид Студию и ждём, ждём, ждём…
Node.js потому, что прекрасно работает с десктопом, а сам JavaScript сложнее всего запретить на мобильных устройствах. Как пример последнего - свежая статья на Хабре про написание плагина к Obsidian. И библиотек завались.
Julia потому, что это тот же Racket, только с императивным но более быстрым языком и изумительной совместимостью со всем, включая модули Python.
Python потому, что это самый естественный выбор для использования модулей Python. И библиотек тоже завались.
Там не Scheme, там недовариант
Нормальный вариант для скриптования гимпа. Не хватает макросов, но то такое.
Основное отличие - в этом случае не нужно создавать приложение и/или превращать в сайт. Теперь должно быть понятно чем разумные способы отличаются от неразумных.
Всё равно непонятно. Что значит "создавать приложение"? Скомпилировать программу? Чем это мешает "разумному использованию в личных целях"?
Если таки не понятно - запускаем Андроид Студию и ждём, ждём, ждём…
При чём тут Андроид Студия? Без неё нельзя писать программы?
Node.js потому, что прекрасно работает с десктопом
Ничего не понял. С каким десктопом он работает, и в каких местах он с ним работает лучше остальных?
JavaScript сложнее всего запретить на мобильных устройствах
Вроде про десктоп речь была. У меня, кстати, на десктопе нет node.js. Да и вообще нигде нет. Я неразумно пользуюсь десктопом?
Как пример последнего - свежая статья на Хабре про написание плагина к Obsidian
Я пишу плагины к org-mode на elisp-е.
Julia потому, что это тот же Racket, только с императивным но более быстрым языком
Не тот же. Так можно java назвать тем же C++, только со сборкой мусора. И как это связано с "разумным использованием"?
Python потому, что это самый естественный выбор для использования модулей Python
Логично. А XXX (подставьте название любимого языка) - это самый естественный выбор для использования модулей XXX.
И библиотек тоже завались.
Да, есть полезные 10%, например numpy и scipy, пользуюсь иногда. Остальные 90% - кривые поделия с тоннами ненужных зависимостей, которые часто не собираются, потому что компоненты зависят от разных версий других компонент. Типичные проблемы питона.
В общем, резюмируя: КГ-АМ, аргументы слабые.
Хорошая операционная система EMACS. Жаль только, что в ней так и не сделали нормального текстового редактора (древняя шутка)
Мне думается, что у GNU Emacs нет проблем: у него есть пользователи и разработчики, которые его любят, и у него за спиной проект GNU и фонд FSF. Вы правы, говоря, что им непросто начать пользоваться, но зато какое удовольствие потом: настраивай как хочешь, экспериментируй посредством написания кода, пиши свои режимы. Уж не говорю о таких штуках, как org, magit. А кому это не надо, то и не надо, как говорится.
зато какое удовольствие потом: настраивай как хочешь, экспериментируй посредством написания кода, пиши свои режимы. Уж не говорю о таких штуках, как org, magit.
Наверное про подобное и должна была быть статья. VSCode приобрёл бешеную популярность за счёт возможности тюнинга плагинами и возможности их написания самому на известном (для фронтендеров) или более-менее привычном для остальных разработчиков. Для VSCode, например, есть Markwhen, поддержка Git у него встроенная, можно ещё кучу всего понаустанавливать, в том числе типа каких-то плагинов для Vim mode, org-mode и так далее. Нужно показывать, чем Emacs круче по сравнению с Vim VSCode, а не хвалиться поддержкой BSD и Соляриса.
на ютубе есть серия коротких роликов по запросу "emacs rocks" которые показывают, что емакс по возможностям все еще далеко впереди аналогов
Справедливости ради, начинается этот цикл с блочного выделения, замены и вставки, которые в принципе есть сейчас во многих редакторах, пусть и чуть по-другому работающие.
Всю статью хочется обернуть одним простым предложением:
Если вы не готовы отказываться от привычного использования редактора, у вас нет времени, которое вы могли бы инвестировать в изучение штуки, требуемый вами функционал которой покрывается 99% популярных современных редакторов - EMACS не для вас
Я немного поправлю:
- Если вы не готовы инвестировать время в изучение системы которая будет вашим рабочим инструментом в следующие 20-40-60 лет, пользуйтесь лучше не емаксом, а редактором, предназначенным для интеллектуального большинства
Взял Doom Emacs с раскладкой от Vi (расширенной, теперь когда иногда запускаешь nvim, некоторых привычных сочетаний очень не хватает). Всё просто работает, хвала Лисснеру. Best of both worlds.
Помню был коллега у меня, что любил EMACS, он на клавиатуре наклеивал специально небольшие накладки на ctrl и meta (видимо), чтоб удобно было нажимать запястьем и не цеплять другие клавиши. Я ещё ему предлагал купить педали какие-нибудь и замапить, правая нога C, левая М, или наоборот. Сам я пользовался тогда (да и сейчас периодически, просто код почти не пишу давненько) - Vim, мы холиварили по приколу, конечно, но если сравнить именно эффективность для конкретных наших однотипных задач, то я не заметил какой-то разницы в эффективности, и там и там одно и то же можно было сделать примерно в одинаковое количество движений пальцев. Однако запускать в консоли по ssh EMACS чтобы конфиг отредактировать вряд ли кто-то любит, а вот vi(m) - очень даже. А так кроме шуток, для емаксеров наверняка где-то продаются готовые пвдели и для тех, кто сидит на одном рабочем месте часто, должно увеличивать прлдуктивность. Я сам, при этом, люблю лисп, но так и не осилил EMACS, во многом потому, что помню сколько времени уходило вначале на настройку вима под себя и его освоение, и уж заниматься ещё и тем же ещё раз, но с новым редактором мне как-то не захотелось. А ещё в виме нет встроенного психотерапевта (M-x doctor вроде), а травмируются о него неопытные пользователи не меньше.
Однако запускать в консоли по ssh EMACS чтобы конфиг отредактировать вряд ли кто-то любит, а вот vi(m) - очень даже.
Тут у второго есть не совсем честное, но преимущество - если подключаться к какой-либо *nix по SSH, то, скорее всего, он там уже будет (либо nano).
Тут чисто кто что выучил. Средний человек из vi выйти-то не сможет, а не то чтобы им конфиги редактировать.
Однако запускать в консоли по ssh EMACS чтобы конфиг отредактировать вряд ли кто-то любит
В емаксе есть трамп (не Дональд). Удалённый (в смысле, не локальный) файл можно открыть прямо из текущей сессии. Поддерживаются (как обычно) 100500 протоколов, но я лично использую только ssh и sudo
Емакс это отдельная ОС, только текстового редактора туда так и не завезли. То ли дело вим - все просто и понятно.

и тогда
[Ctrl+C]
,[Ctrl+V]
и[Ctrl+X]
у вас будут работать так же, как в нормальных редакторах.
Эти сочетания и в других программах под DOS/Windows особо не использовал, а привычные Control/Shift+Ins/Del ни с чем не кофликтуют и сейчас вполне работают в голом emacs -q (в конце 90х приходилось явно грузить pc-select, у себя слегка модифицировал чтобы так же работать с прямоугольными блоками).
И очень хорошо что емакс такой сложный. Зато сразу можно отличить людей, рационально использующих своё время, от тех, кому ещё есть над чем работать.
Я бы хотел больше статей про org-mode и организацию рабочих процессов в нем. Мне кажется это очень полезная и неисследованная тема
Кстати сейчас увидел:
У GNU Emacs отличная обратная совместимость. Вы называете это говном мамонта и legacy. Я называю это стабильностью. Мы не одинаковы.
И вот эта статья от самого автора: https://habr.com/ru/articles/847420/
если создать файл
init.el
и отладить его, то через 2-3 месяца запуск с ним Emacs на другом компьютере с большой вероятностью приведёт к ошибкам установки или несовместимости пакетов
А что насчёт Emacs? Очень долго там не было способа использовать фиксированные версии пакетов из архивов типа MELPA. Дело в том, что архивы не хранят историю версий, а предоставляют доступ только к самому свежему релизу пакета. Надо ли говорить, что пакеты из MELPA часто ломаются?
MELPA Stable не решает проблему, потому что собирает пакеты не стабильной версии, а вообще любой, лишь бы там стоял тег системы контроля версий.
Такая себе обратная совместимость и стабильность, если честно
У меня таких частых проблем не было, Emacs периодически обновляю и использую на винде и линуксе. Из заметных пролем с совместимостью - переход на человеческую поддержку Unicode в Emacs 20 в конце 90х (пришлось аккуратно повыкидывать старые костыли) и изменение интерфейса advice лет несколько назад (у меня на нём склейка escreen и pc-bufsw, пришлось немного перелопатить).
Проблема не в Emacs, а в сторонних пакетах.
Дорогой автор, спасибо за статью и Ваш труд по написанию книги!
С недавнего времени учу по оф. документации Emacs. Делать это я начал, потому что знаю точно, какой функционал я хочу реализовать с помощью elisp.
До этого использовал иногда vim и субъективно могу подтвердить, что изучается он сложнее.
Я взялся за Emacs, когда у меня был старый комп и VS Code грузился минут 10, искал легкую замену, потом заинтересовался в целом. Но в конечном итоге купил новый комп и задолбался возиться с настройками Emacs для кодинга, в VS Code есть все, что нужно, и работает сразу. Но активно использую Emacs для работы с текстами, вот тут он быстрее и мощнее любого текстового редактора а ля Ворд/ЛибрОфис, очень удобно, а в сочетании с org-mode вообще бомба. Также использую для заметок, списков.
ЧТо касается входа, то есть очень доступные и понятные видео от SystemCrafters, Майка Замански, например. Там пошаговая настройка, в процессе понимаешь, как все устроено.
Вы неправильно настраиваете Emacs: не пытайтесь сделать из него что-то другое