Comments 34
полезно
Интересно, что музыкальный редактор Reaper сделан по похожему принципу: все есть команды, к каждой команде можно назначить сочетание или вызов из скрипта, или добавить в ту или иную контекстную менюшку. Кто-то, значит, научился у Emacs.
(Кстати, автор Reaper-а в свое время написал Winamp, а потом продал его AOL за бешеные миллионы.)
Почему вы не упомянули VSCode? Он работает также командами, только написан на JavaScript, может запускаться полностью в броузере и/или в докере, чтобы не грузить электрон.
ну статья про емакс, у вскода расход ресурсов другой к слову если сравнивать
выгодно даже на яве запускать приложение чем мучать этот V8
всё в одном месте нету разнозненности процесс в диспетчере 1, работает не плохо(емакс), вскод постоянно обновляется, и еще вспоминать где отключать его штуки даже забыл как они называются(типо процессы или аддоны при запуске)
Я почему заинтересовался, потому что в статье упоминаются другие редакторы, а ВСкода нет, что немного странно для вэб-разработчика. Ведь это редактор написанный полностью на вебе. Разве не интересно было его зачекать?
V8 очень производительный, сравним с той же Явой и Го. Процесс отрисовки у него тоже один. Языковые фичи стандартные, клиент/сервер, как и в Емакс поключаются.
Обновляется не потому что бажный, а потому что фичи добавляются новые. Плагины зачем отключать, вы же их сами ставите, например: Гит, линтеры, подкраски и раскраски, ну можно удалить или деактивировать в конфигурашке.
а что вообще общего в подходах эмакса и вс кода? при чём он тут вообще? или если веб разработчик, то обязан упомянуть, раз он на веб технологиях?
Там тоже команды. Тоже все настраивается. Тоже все можно переписать, причем на нашем (вэб) стеке.
И это демонстрация того на сколько далеко зашли вэб технологии, что полноценная IDE может быть реализована. Меня это изумляет.
Но я не собирался устраивать флэйм-войн. Уважаю как емакс с липсом, так и вим.
Тоже все настраивается
перестаньте нести чушь. Вскод почти не настраивается. То, что вам дали возможность переназначить пару клавиш и перекинуть что-то с левой панели на правую НИЧЕГО не значит. Ни один редактор/иде не настраивается как Емакс, даже неовим. Я буквально решаю, как будет выглядеть каждое окно, какая там информация будет показываться и где откроется новое окно. А также я полностью поменял встроенную систему автодополнения из самых глубоких глубин редактора. Буквально его основу поменял на более быструю версию, которая сортирует результат как я сказал, а не разработчик редактора/экстеншена. Вот что такое гибкость настройки
Так я и не оспариваю что Емакс лекго настраивается. Я лишь говорил что в ВСКоде тоже команды и тоже кодом можно все сделать, возможно даже в рантайме, хотя большинство штук которые мне нужны настроены и выглядят так как я хочу из коробки.
Я буквально решаю, как будет выглядеть каждое окно, какая там информация будет показываться и где откроется новое окно
Т.е. это продукт для фриков, которые вместо работы в редакторе бесконечно его кастомизируют?
А почему кто-то должен упоминать VSCode? Emacs ещё переживет этот редактор, как пережил множество других. VSCode никогда не будет таким гибким и конфигурируемым как сабж, зачем его упоминать?
Sublime text же упомянули. То есть, он будет гибким и конфигуриреумым, его Emacs не переживёт?
Да и какая разница, кто кого переживёт? Разве у кого-то есть цель пользоваться только вечными продуктами? И, наверное, слушать только ту музыку, которая продалась миллионными тиражами, а то вдруг через 40 лет её уже забудут?
Разница в том, что привыкнув к Емакс мне не хочется открывать ни саблайм, ни вскод ни идею. Так почему в статье нужно обязательно упоминать именно вскод? Примера с саблаймом вполне хватило. Зачем именно вскод?
Я не принуждаю вас что-либо открывать. Тут речь о том, что в статье упомянут более отдалённый редактор, если смотреть только на перечисленные функции. А более похожий, но не менее популярный, не упомянут.
Приведены несколько редакторов, а затем: "Только здесь описанный принцип реализован на порядок глубже, так как практически всё в Emacs представляет команду". Очень легко конкурировать с теми, кого сам отобрал, и выглядеть на их фоне на порядок глубже. Этот подход называется борьбой с ветряными мельницами, если я не путаю.
что в статье упомянут более отдалённый редактор
В статье приведен один из редакторов, в которых есть эта функциональность. И вскод абсолютно ничем не отличается от саблайма.
Этот подход называется борьбой с ветряными мельницами, если я не путаю.
Нету никакого подхода, только у вас в голове. Ни саблайм ни вскод не конкуренты Емаксу вообще ни разу. Конкурент - это тот, кто может хотя бы плюс минус ту же функциональность предоставить.
Речь идёт об ограниченном наборе критериев, представленных в статье. Именно ПО ЭТИМ критериям vs code соответствует емаксу. Я ниже представил скриншоты того, что даже перемещение курсора в vs code настраивается в ручную. А сегодня я обнаружил, что у меня ctrl+home отвалился, потому что я для другой клавиатуры перенастраивал его на ctrl+alt+pgup, и вместо добавления нового хоткея переписал старый.
Любое сравнение имеет критерии. В данном случае критерии для сравнения описаны в статье. Всё, что в статье не описано, рассматривать не нужно.
Я вижу, что emacs сравнили с sublime text и сделали вывод, что emacs глубже. Да, судя по всему, он предоставляет больше возможностей, чем sublime, но у читателя, скорее всего, сложится впечатление, что он просто превзошёл всех.
Возьмём несколько случайных людей: соседа снизу, соседку по площадке и соседку с 5 этажа. У них разный возраст, но легко заметить, что я на несколько десятилетий моложе любого. Если бы не контекст разговора, вы бы уже подумали, что мне лет 20, да или нет?
Да, примерчик с привязыванией последовательности действий к кнопке простоват. Лучше бы немного посложнее, навскидку из своих конфигов - переключалка между исходником и заголовком
(defvar complimentary-extensions-list
'(("h" "c" "cpp")
("c" "h")
("cpp" "h"))
"List of extensions of complimentary files, used by visit-complimentary-file function.
It is list of lists, first element of them being the extension of the source file,
and the other elements being the extensions of the correspondent complimentary
files in the order visit-complimentary-file will look for them")
(defun complimentary-file-name ()
"Return the name of the file complimentary to the one visited
in the current buffer according to `complimentary-extensions-list'"
(catch 'file-found
(let ((file-name (file-name-sans-extension (buffer-file-name)))
(file-extension (file-name-extension (buffer-file-name))))
(mapcar
#'(lambda (extension)
(if (string= file-extension (car extension))
(mapcar
#'(lambda (complimentary-extension)
(let ((name (concat file-name "." complimentary-extension)))
(if (file-exists-p name)
(throw 'file-found name)))) (cdr extension))))
complimentary-extensions-list) nil)))
(defun visit-complimentary-file ()
"Visit the file complimentary to the one visited
in the current buffer according to `complimentary-extensions-list'"
(interactive)
(let ((name (complimentary-file-name)))
(if name (find-file name))))
(global-set-key (kbd "C-`") 'visit-complimentary-file)
Знаю, что в VS Code такое есть, вопрос в том, насколько легко было бы добавить, если бы не было.
Именно ПО ЭТИМ критериям vs code соответствует емаксу.
В каком месте вы это придумали, а? Вы пользуетесь обоими редакторами, что можете так смело всем это утверждать? Я вот пользуюсь обоими и утверждаю, что вскод такой же ограниченный редактор, как и саблайм и оба не смогут никогда даже приблизится к Емаксу. Просто потому, что Емакс не редактор, а интерпретатор Лиспа. Вскод НИКОГДА ни будет настолько гибким, как Емакс. Там нету интерпретатора жс скрипта, а просто ограниченное дсл для екстеншенов.
Я ниже представил скриншоты того, что даже перемещение курсора в vs code настраивается в ручную
Это просто смешно.
Всё есть команда
Да
Любые горячие клавиши … редактируются
Да
Создавать небольшие скрипты … легко и полезно
Зависит от критериев лёгкости и полезности, можно сказать, что и в VS Code легко и полезно, кто оспорит?
Всё … можно сделать с клавиатуры
Не могу сказать про всё-всё, но то, что я делаю, в целом, сделать можно. Ну, только кроме изменения размеров кусков разделённого окна. Иногда хотелось бы по какому-нибудь ctrl+ увеличить текущий editor в ширину.
Должен ли я пользоваться Емаксом, чтобы подтвердить, что VS Code умеет то, что описано?
Просто потому, что Емакс не редактор, а интерпретатор Лиспа.
Небольшое дополнение - не только интепретатор, но и компилятор (в последних версиях - и в нативный код).
Из статьи может и не очевидно, но по конфигурируемости emacs действительно намного превосходит VSCode. Посмотрите мой комментарий ниже.
У них разные сильные и слабые стороны, но вот эта динамическая гибкость лиспа позволяет строить потрясающие системы типа org-agenda, org-babel, org-roam и пр.
Я полагаю, именно лисповая гибкость позволяет быть им такими волшебными. Пользователи строят из них совершенно разные конфигурации и флоу, а разработчикам не нужно думать об апи для пользовательских расширений: весь код – одно сплошное апи.
Описано привычное мне поведение VS Code. Несколько команд запускаю макросами, для которых ставил отдельный аддон. Но мне это не очень часто нужно.
Скриншот

Последовательные комбинации

Никогда не работал с Emacs. Из статьи, я так понял, что идеология работы в данном редакторе такова: сначала - абы как написать текст, потом - под этот текст написать макросы, которые долго и упорно будут его форматировать\проверять. Особо удачные макросы можно сохранить и вызывать горячими клавишами для использования в следующем абы как написанном тексте.
Я так понял.
Нюанс в том, что макросы пишутся на полноценном языке программирования и большая часть существующей функциональности (синтаксическая подветка, интеграция с системами контроля версий, встроенный почтовый клиент и т.д.) написаны на этом языке, который доступен и конечному пользователю - так что можно не просто навесить несколько действий на клавишу, но и добавить свою серьёзную фичу.
Пользуюсь и vscode, и emacs, попробую объяснить, в чем разница подходов на недавнем примере.
У VSCode стандартное поведение нажатия на ошибку в панели PROBLEMS – открыть редактор в нужном месте, выделив весь проблемный регион. Редко когда нужно заменять регион целиком, поэтому меня все время отвлекала необходимость нажимать ESC после перехода к ошибке, чтобы сбросить выделение.
В какой-то тысячный раз, отвлекшись на эту ерунду, я решил: ХВАТИТ ЭТО ТЕРПЕТЬ!11
Ну и поправил. Для этого потребовалось: скачать исходники VSCode, VSCodium, подобрать необходимые версии node и зависимости msvc built tools, подготовить патч, разместить его в своем форке vscodium и собрать релизную версию редактора. (Способ подразумевает, что при желании обновить версию vscode, не приходилось патчить исходники вручную.
В emacs, если мне что-то не нравится, я прямо через хэлп команды перепрыгиваю к исходникам, редактирую, заменяю в памяти реализацию функции и проверяю. Файл с исходниками не сохраняю. Если новый результат мне нравится, я просто копирую реализацию отредактированной функции к себе в конфиг. Речь идет не только о командах, у себя в конфиге можно переопределить вообще любую функцию из исходников.
Я бы добавил, что принципиальная особенность - чёткое разделение концепций фрейма (окно в "обычной" терминологии), окна (тайл), буфера (то, что показывается в окне) и режима (как показывать буфер и как реагировать на сочетания клавиш). При этом буфер может соответствовать файлу, может - процессу (например динамически отображать процесс компиляции или содержать интерактивный шелл), а может отображать что угодно - скажем, историю в git с возможностью переключиться на конкретный коммит (это просто специальный режим с отображением в переработанном виде выдачи комманд лайна git и соответствующими комбинациями клавиш). При этом поддержка всего этого пишется единообразно на общих elisp функциях, работащих с файлами, процессами, буферами и прочим.
спасибо за статью, очень вовремя, буквально утром 28 марта проснулся и подумал что надо всё-таки попробовать емакс, к обеду его уже настроил и понял некоторые фишки.. и тут вы в этот же день пишете про него статью) жаль прочитал два дня спустя, но как мне кажется, да, он идеален. по крайней мере если что-то не нравится без проблем можно это изменить и это его плюс. спасибо!)
Есть ли в emacs интеграция с ChatGPT? Написал свой плагин к vscode для работы с текстом (проверка грамматики/написать проще/перевести на английский и т.п.). Пользуюсь, улучшаю. На emacs так можно? Знаю, сравнение vscode с emacs некорректно. Первый IDE, второй текстовый редактор. Вот в vscode есть куча плагинов. Работа с github, terraform, opentofu. У emacs есть сообщество?
В Емакс уже с десяток разных интеграций и с онлайн чатами и с локальными ллм типа оллама. И плагинов там тоже выше криши. На все случаи жизни
Есть ли в emacs интеграция с ChatGPT?
Первый IDE, второй текстовый редактор.
Скорее это первый - текстовый редактор с расширенным функционалом, а второй - чуть ли не полноценная операционная система.
Есть даже несколько поговорок, типа "единственное, чего не умеет emacs - это варить кофе" (но сообщество сделало M-x coffee-mode) или "единственное, чего не хватает в emacs - это нормального текстового редактора" (но для этого существует eVIl-mode)
Ну chatgpt это просто. В емаксе есть: telegram, браузер, почтовые клиенты, игры, система умный дом (там кондей включить, или чайник, на крайняк пылесос), но это все фигня не нужная. Я видел людей, которые на емаксе сидят годами, они по коду перемещаются не стрелками или мышкой, а символами (каждый открытый файл, строка, и символ - соответствует определенной последовательности символов на клавиатуре), и делают это за 200-300мс. Они код пишут в разы быстрее любого другого человека, что я видел, просто по щелчку пальцев. У них сниппеты, на любой случай жизни есть, уже готовые. Это просто крышесностно. И при этом их редакторы выглядят скорее как блокнот (ни номеров строк, потому что они им не нужны, ни дерева категории, ничего, только температура воздуха и чайника может на нижней панельке висеть)
Чем хорош Emacs, или Полезные советы современным приложениям от 50-летнего редактора