Pull to refresh

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 - они все немного кастрированные. И это свободное ПО

UFO landed and left these words here

Так не все хотят заниматься бесконечной кастомизацией редактора.

Если задачи сколько-нибудь сложные и отличающиеся от mainline - то все хотят иметь возможность настроить под себя

могу прыгать в начало строк через "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" которые показывают, что емакс по возможностям все еще далеко впереди аналогов

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

Там есть мои любимые прыжки по тексту и multiple cursors, не уверен что что-то похожее есть у конкурентов, если я неправ - поправьте

Эталонная реализация мультикурсорности сделана в Sublime Text. Пакет для EMACS глючный, а не которые даже считают что не нужно.

Всю статью хочется обернуть одним простым предложением:

Если вы не готовы отказываться от привычного использования редактора, у вас нет времени, которое вы могли бы инвестировать в изучение штуки, требуемый вами функционал которой покрывается 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).

В Emacs сделано ещё круче: https://www.gnu.org/software/tramp/tramp-emacs.html

После того как в vscode появился аналог tramp, я облегчённо выдохнул и закрыл emacs после 15 лет использования.

Тут чисто кто что выучил. Средний человек из 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 расшифровывали как Eight Megabytes And Constant Swapping...

Sign up to leave a comment.

Articles