Комментарии 77
Темы про операционные системы становятся популярными :) Вчера статья про U365, сегодня Emacs.
Как бы там ни было, личная конфигурация эмакса по своей природе была есть и будет просто большой кучей бессвязаного кода, и лучший способ справиться с этим — оставить все как есть

Что мешает решить эту проблему по аналогии с Vim и использовать каталог модулей?
Автор, как ваш текст связан с заголовком? Из какого абзаца становится ясно, что Емакс настроен хорошо и правильно? Воды только налили про историю, ГНУ и Столлмана. И произношение «Эмакс» — какая-то жесть.

Если кому интересно, хорошо настроенный Емакс — это когда конфигурацию можно развернуть в пару команд на любой машине. Поэтому конфигурация должна использовать Cask — менеджер зависимостей для elisp-проектов.

Посмотрите пример моей кофигурации — github.com/igrishaev/dotfiles
Все пакеты ставятся через Cask. В файле init.el — настройки пакетов с комментариями. Эта конфигурация на раз ставится и в нативном MacOs, и под убунтой в виртуалке. Работает одинаково в гуевом емаксе и в терминале.

Вот это — действительно хорошо настроенный Емакс.
К моему большому сожалению если бы я написал здесь что эта статья является лишь введением большей статьи — непосредственно моего конфигурационного файла ссылку на который я разместил снизу, меня бы забанили на хабре, потому что я так уже делал и меня банили. А все потому что у некоторых модератов сами знаете какого ресурса синдром вахтера в терминальной стадии. Поэтому мне пришлось порезать статью и представить ее в том виде в котором вы ее не смогли осилить. Это без сомнения моя недоработка. Но я сделал это лишь для того чтобы была возможность прочитать это тем кто сможет в это въехать и использовать себе на благо.

Что касается произношения эмакс, то я наверное опять таки переусложнил с транскрипцией, думал сдесь собираются люди которые в школе английский не прогуливали, ну то есть ​/ˈeditər ˈmakrōs/​ произносится по-английски как эдитор макрос, есть альтернативные шуточные расшифровки и первый звук в каждой из них — э.

Если вы спрашиваете в каком абзаце становится ясно, то я бы посоветовал вам перечитать статью несколько раз до тех пор пока этот вопрос не исчезнет сам собой, потому что в этой статье 150 абзацев и если из них не становится ясно то что должно быть ясно — просто забудьте это и пользуйтесь на здоровье к чему душа лежит ближе.

Вот кстати пример моего конфигурационного файла — gist.github.com/zahardzhan/7d0b7332897d0b27b8ee. Все пакеты ставятся через Package. В файле init.el — настройки пакетов без комментариев. Эта конфигурация на раз ставится в нативной Windows 10, и под абсолютно под чем угодно где угодно. Работает одинаково в гуевом эмаксе и в терминале.
Посмотрите как организован мой цикл статей по Vim. Никто не забанил и читать удобно.
Оно того не стоит. К тому же это полностью противоречит самому формату статьи. Смысл же не только в том чтобы ее читать, смысл в том чтобы ею пользоваться.

Ирония. Первый же комментарий под первой статьей: Ждем ответ от поклонников Emacs!
Я говорил про этот пост. Вы поставили заголовок «Хорошо настроенный емакс», но в посте одна вода, и в последнем абзаце — ссылка на блог. Читатели не должны быть обмануты из-за ваших отношений с модераторами. Взялись писать — так пишите хорошо. Саму статью почитаю.

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

Вы не понимаете? Либо статья опубликована плохо либо не опубликована вовсе. Ваши слова не имеют под собой ни основания ни смысла. Вот исходный вариант который похерили модераторы gitlab.com/zahardzhan/well-tuned-emacs/blob/c0b81847f55afb2d1b7718bf971ff476125cf8f3/README.org. Это не ссылка на блог. Эта ссылка на статью в удобочитаемом виде в репозитории. Система публикации проектной документации гитхаба привязана к «блогу» автора проекта, сам же гитхаб вменяемо отрендерить хардкорный документ в формате org не может. Насчет же произношения — ни я ни вы не обладаем авторитетом известного произносителя заграничных слов по русски Артемия Лебедева чтобы указывать друг другу что и как произносить.
Я прекрасно понимаю вашу позицию. Вы проделали большой труд, и статью я обязательно прочитаю. Но чтобы поделиться статьей на Хабре, нужно приложить усилия. Неподготовленную статью забанили, голую ссылку кинуть нельзя, поэтому вы налили воды и создали иллюзию поста. Я против такого подхода. Почему бы вам не разбить статью на части и опубликовать циклом в блоге про Емакс? К каждой такой статье вы получите отзывы и пожелания, как организовать следующую часть. Это было бы по существу.
Было бы по существу, если бы вы прочитали статью прежде чем такое писать. Статья, введение к которой здесь опубликовано — это интерактивное программное обеспечение и в то же время исходник программы написанной на языке высокого уровня, который компилируется в интерпретируемую программу на эмакс лиспе которая в свою очередь компилируется в байт-код эмакс лиспа и управлять этими процессами читатель может непосредственно из самой статьи читая ее и взаимодействуя с ней. Таков формат этой статьи. И еще ею можно настроить Emacs.
Чет вы загнули, интерактивная статья, тыры пыры. Сейчас это статья, которая называется по одному, а содержит совсем другое. Вы либо переименуйте ее в «Введение в среду настройки emacs», либо добавьте в нее информацию о том, как хорошо настроить emacs. Пока в статье 90% истории и 10% ссылок. Мне самому нужно из ваших ссылок находить и читать инфу?
Я еще раз напишу, что не умаляю достоинств статьи и вашего труда. И если хотите поделиться ей с широким кругом читателей — адаптируйте.
Пять лет назад я написал статью про Emacs Starter Kit, и эта статья была объективно говном — как по форме, так и по содержанию. И она получила высокую оценку здесь. Недавно я подумал — почему бы не отпидорасить эту статью до такой степени чтобы она была настолько хороша в качестве статьи про настройку Emacs насколько это вообще возможно. И я это сделал. И опубликовал здесь насколько это позволено модераторами. И знаете что? Я ее лучше удалю отсюда чем адаптирую. Потому что мне например очевидно, что те кому нужна «адаптация» — это не те для кого это написано.
Мы слишком глупы чтобы понять вашу величайшую разработку.
Удаляйте и не появляйтесь больше на хабре, удачи.
Дружище, если ты поливаешь говном проект сделанный слово в слово в соответствии с твоей же собственной философией разработки проектной документации, то я не знаю что ты за чудовище. Просто тролль. Либо твоя философия — хуета на постном масле, но тогда будь добр это признать.
Я вам не дружище (к моему счастью ограждаю себя от подобных людей).
Само собой. Взаимно. Я обращаюсь к вам «дружище» потому что выражаю этим легкую степень неуважения, а не потому что вы мой «дружище».
С другой стороны очень странно читать подобное от автора статьи «Пользовательская документация и GitHub». Очень странно.
Сталкивались ли вы когда нибудь с долгим поиском документации к используемой библиотеке или пакету? Я считаю странным, что исходный код не распространяется с пользовательской документацией. Ведь она такая же важная часть кода, как тесты или зависимости. Без хорошей пользовательской документации мы можем «убить» уйму времени на анализ кода и комментариев. Так почему бы не хранить пользовательскую документацию вместе с исходными кодами программы? Речь не о DocBlock и генерацию документации по API проекта, я говорю именно о пользовательской документации, которую мы так любим за последовательное повествование и множество примеров.

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

Удивительно что те кто подобное предлагает не в состоянии подобное оценить.
… или превратить эту кучу в руководство которое будет объяснять причины (в первую очередь чтобы не забыть самому) по которым тот или иной фрагмент находится в этой куче…
Т.е. основной посыл всё-таки в репозитории по ссылке, верно?
от3.14**л до такой степени, что она настолько хороша? Серьезно?
В первом же абзаце:
макс это текстовый редактор поведение и возможности которого изменяются прямо во время написания в нем текста на языке программирования на котором написан сам эмакс. Более того, прямо во время написания в эмаксе текста на языке программирования на котором написан сам эмакс изменяется поведение и возможности самого языка программирования на котором написан эмакс.
Я правильно понял, что anaconda-mode >> jedi.el? Сам пользуюсь первой, а Jedi так и не осилил — постоянные проблемы. Кстати, у Вас вся конфигурация в одном файле? Почему не разбиваете на части?
Отдельное спасибо за alias'ы — взял на заметку.
Я еще не разобрался, что для питона лучше. Jedi запускается как сервер и работает сразу с несколькими окружениями одновременно. Из-за этого есть риск прыгнуть не в ту Джангу, например, это один раз меня подвело. Но автокомлит у нее лучше. Анаконда проще наcтраивается и позволяет переключать окружение по требованию. Я переключаюсь модулем virtualenvwrapper. Конфигурация не такая большая, чтобы разбивать.

Ребята, гуру емакса, подскажите, есть ли там штука, типа command palette в sublime text или find action в jetbrains? Просто новичку снаскоку сложный редактор без палитры команд вкурить трудно.
Не, я чайник. Как разобраться в редакторе, когда я не знаю ни названия команды ни хотки к ней? В других редакторах спасает палитра команд с нечётким поиском.
emacs (vim) от других редакторов отличается как раз-таки тем, что его познают не методом тыка по палитре команд, а методом курения манов (можно паровозиком от гуру).
Зачем? Философия юника требует сначала изучения инструмента, а уже потом его использования. Если вы хотите потыкать по кнопочкам, может вам больше подойдет какой нить современный GUI IDE?
Век тёплых ламповых компов и двадцатитомных манов закончился. Пора потихоньку менять «философию юника».
Не стоит заблуждаться — конец кругозора — это еще не конец века по меткому выражению Шопенгауэра
Да ни дай бог. У вас есть эйплы, микрософты и джетбрейны, там меняйте что вам хочется, а философию юника не трогайте! Сначала изучите ее, прежде чем делать предложения и выводы.
Количество гитхаб звёздочек у spacemacs доказывает что юзер-френдли решения народом более предпочтительны, чем ваша «философия юника» =D
Просто для справки, Emacs был создан в MIT и впоследствии развивался как одна из основных компонент лисп-машин которые создавались в традиции «философии MIT», и «философия UNIX» ко всему этому не имеет абсолютно никакого отношения. Это были другие люди, у них были другие идеалы. См. Ричард Габриэль. Просто не слушайте этого мудака, он вам тут лапши понавешает.
По нажатию M-x (Alt-x) вываливается приглашение вести команду. Название можно ввести частично. Например, на картинке я ввел sort и вижу все команды с этим словом.
Очень давно не пользовался Емаксом. На сколько я помню, жмёшь Alt+X и можно вводить имя команды. Табуляция для автодополнения и показывает список подходящих по имени команд.
А нечёткий поиск есть? А поиск по описанию команды? Или надо тупо вызубрить 100500 команд, а только потом приниматься за редактирование?
Тут люди немного утрируют, что нужно сначала прочитать тонны документации и только после этого пользоваться Emacs. Это верно для Vim, в котором без документации действительно ничего непонятно. Но в Emacs основные команды вынесены в меню (создание/открытие/сохранение файла, переключение между буферами (окнами) и т.п.), их не нужно искать.

Emacs уже 40 лет! Если за эти годы никому не понадобился поиск команды по описанию или регулярному выражению, значит он действительно не нужен. Честно говоря, я не видел редакторов, где это есть и никогда таким не пользовался. И как вы представляете себе такой поиск? Если команду нельзя найти по имени, очевидно, что она неправильно называется! Её нужно переименовать и нет проблемы. Более того, такой нечёткий поиск только всё усложнил бы. Выдавалась бы куча лишних команд, у которых в описании просто что-то упоминается.

Но если это всё-таки нужно, я думаю, это элементарно пишется на лиспе.

Можно искать по первым буквам слов в имени команды. Но это если уже знаешь как называется команда. Если не знаешь, ну вводишь в первые разы слово полностью. Если мне нужно отсортировать линии, очевидно я введу слово sort. Что ещё можно ввести? ) А для элементарных команд, повторюсь, есть меню.

Я не призываю пользоваться Emacs, более того, я сам редко им пользуюсь. Но не потому, что он плохой, а потому что мне просто не нужны все эти возможности. Большую часть времени я использую MS Word, Excel, Far, Eclipse. Ну, может иногда Visual Studio, SSMS, Sublime.

Я считаю, что Emacs очень user-friendly, очень удобный и очень мощный редактор. Но я думаю, что все люди не переходят на Emacs потому что:
1) У него имидж сложного редактора, многих это отпугивает
2) Он не рекламируется и не навязывается повсеместно как Sublime, IDEA или ещё что-нибудь «модное и современное»
3) В нём нет каких-то фишек, которые могут быть в некоторых коммерческих редакторах
4) Некоторые ниши заняли другие редакторы, например, Word. И не потому что они лучше, а потому что так сложилось
Но в Emacs основные команды вынесены в меню (создание/открытие/сохранение файла, переключение между буферами (окнами) и т.п.), их не нужно искать.
Не подскажете где это меню в консольной версии? Ибо возможность запуска в консоли для меня критичное преимущество vim и emacs. Заодно напомните, пожалуйста, есть ли в конце каждого подобного пункта меню текст соответствующей комбинации клавиш, чтоб найдя пару раз пункт меню начать пользоваться этой комбинацией. Насколько я помню его нет (и это единственная подобная программа из тех, что я пользовался).
Если за эти годы никому не понадобился поиск команды по описанию или регулярному выражению, значит он действительно не нужен.
Просто те, кому он понадобился, не смогли начать им пользоваться. Например я.
И как вы представляете себе такой поиск?
Idea: Ctrl+Shift+A — идеал юзабилити. Возможно изучать хоткеи по мере необходимости.
Но я думаю, что все люди не переходят на Emacs потому что:
Ни одно из ваших предположений не выполнилось для меня. Он мне был очень нужен как рабочий инструмент и имидж сложности меня не пугал — я попытался начать им пользоваться. И понял, что это невозможно без хотя бы недели изучения. У меня столько свободного времени не было, пришлось остаться на vim.
Вы зашли здесь невзначай в комментах посрать или у вас есть некая высшая цель? Просто интересно.
В статью я зашел в надежде найти инструкцию по настройке emacs в духе: «сделайте вот так и этим можно начать пользоваться». Во мне периодически просыпается надежда на легкий переход с vim на emacs (хотя теперь больше надежды на neovim).
Статья оказалась пустышкой (о чем выше вам уже сказали).
А тут просто ответил Ares_ekb на вопрос про пример нечеткого поиска команды по описанию.
Это я к тому что вы пишете всякие глупости. В если поискать в моей статье слово «меню» — вы найдете две ссылки на которые можно щелкнуть мышкой и настроить меню по своему усмотрению — и сделать это можно прямо из консоли, и у вас прямо в консоли будет меню и в каждом пункте меню будет текст соответствующей комбинации клавиш.

Из вышесказанного я сделал вывод, что вы статью не прочитали, даже мельком не ознакомились с ней и уж тем более не попытались ее использовать, а просто заведомо пришли ко мнению, что это пустышка, а потом насрали в комментах нелепой чепухи. Скажите что это не так.
Во всех отношениях та статья реализована чудовищно. Проект давно мертв. Не рекомендую. У местных посетителей превратное чувство вкуса в технических аспектах.
Я почти не пользовался консольной версией. Зачем она вам? Файлы можно редактировать через SSH. Зачем запускать Emacs в консоли?

"Idea: Ctrl+Shift+A" — ну дык это то же самое что и в Emacs. Один в один поиск по имени команды. Причем, у меня ощущение, что в Emacs даже лучше… Если в IDEA написать «scr top» (сократив «scroll» и пропустив «to»), он найдёт команду? Emacs найдет.

У меня была точно такая же ситуация с Vim, как у вас с Emacs. Я потыкался в Vim, почитал документацию, но понял, что не смогу этим пользоваться.
Если в IDEA написать «scr top» (сократив «scroll» и пропустив «to»), он найдёт команду?
Конечно найдет.
А еще найдет по show author команду Annotate. Поиск не по названию, а по описанию. То о чем несколько комментариев назад спрашивал olegkrasnov.

Ну а про консоль: я пользуюсь консолью постоянно. Мне не нужно чтоб на каждый чих (вроде git commit) выскакивало новое оно редактора. Тем более, что не всегда у меня запущены иксы (на тот момент мне это было актуально).
Действительно, по умолчанию оно есть и открывается по F10. Как-то я его пропустил, когда пробовал emacs. Может взял чужой конфиг с отключенным меню.
Спасибо.
> Зачем она вам?
Я заметил, что гуевая версия падает чаще (где-то раз в неделю). Консольная — никогда. Но это зависит от ОС и версии, конечно.
Еще консольную версию можно накатить в виртуалке и спокойно работать.
Ну в Vim тоже есть меню, только встает вопрос — зачем ставить emacs/vim, если планируется работать в них мышкой? Ради хвастовства перед коллегами?
А зачем вам Emacs вообще? Из ваших комментариев я вижу что Emacs вам не нужен. Т. к. человек которому он нужен/интересен берет и использует его без лишних вопросов. Кому-то подходит Emacs (куча плагинов под любые нужны), кому-то Sublime (тоже много плагинов, но такого многообразия как в emacs нет).
Кстати, да, у меня, например, были такие причины пользоваться Emacs
1) интерес к лисп
2) возможность редактировать файлы через SSH
3) фичи, которых нет в других редакторах (например, сортировка строк или регулярные выражения, которые не поддерживаются из коробки в Far или блокноте)
4) желание пользоваться бесплатным ПО, а не крякнутым
5) я раньше активно пользовался линуксом, а для него это один из самых адекватных редакторов
6) стремление к изучению чего-то нового
7) им просто приятно пользоваться, по сравнению с другими редакторами он практически не потребляет память, очень быстро работает. По сравнению с современными глюкалами, которые сделаны тяп-ляп, Emacs — просто воплощение безглючности и оптимальности во всём

Но сейчас большая часть причин не актуальна и мне без разницы чем пользоваться. Хотя, блин, то что Word, Eclipse и Chrome сжирают 8 Гб оперативной памяти на пустом месте очень бесит. То что Word часто вылетает, то что очевидные команды в каждой версии в нём куда-то прячут, что фиг найдёшь. Что Eclipse тормозит на ровном месте и т.п. Outlook тоже бесит.

Добавить в этот список ещё Far — и в общем-то это всё чем я обычно пользуюсь. А, ведь, все эти программы может заменить один Emacs! К слову, в нём и психолог есть, с которым можно обсудить жизненные ситуации, и игры.
Т. к. человек которому он нужен/интересен берет и использует его без лишних вопросов.
Мне нужен был мощный консольный редактор. Я пользовался vim, по хотел перейти на emacs из-за lisp (я не фанат lisp, просто считаю его хорошим ЯП, в отличии от vimscript).
Мой вывод: нельзя просто так взять и начать пользоваться emacs без недели изучения, что непозволительная роскошь.
> Мне нужен был мощный консольный редактор. Я пользовался vim
> нельзя просто так взять и начать пользоваться emacs без недели изучения

Как будто vim освоить быстрее) Ну на пару вечеров быстрее чем emacs, ок. На уровне блокнота emacs учится за вечер (и уже можно брать и писать код), за неделю учатся базовые функции и плагины (справка, dired, helm, org, magit, в общем по желанию). А вот после этого что в Vim, что в Emacs изучение фич может идти годами параллельно с использованием, и постоянно будут открываться новые возможности, сколько бы времени ни потратить — этим процесс и увлекателен.

Кстати, в Emacs есть режим эмуляции Vim под названием evil-mode, подходит не только свитчерам с vi/vim, но и просто кому угодно для заимствования от Vim скорости редактирования.
Есть задача освоить мощный, быстрый, безглючный консольный редактор. Хочется изучать его в процессе работы. Без лишних вопросов изучать не получается. Очень специфичный интерфейс.

В JetBrains есть окно «Find Action»:

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

Но вместо того, чтобы подсказать как найти аналогичный функционал в имаксе, добрые и отзывчивые юниксоиды посылают курить ман или вообще говорят что этот редактор мне не нужен. Зачем такой снобизм?
Так чем вам M-x не подошел? У всех команд нормальные имена. По C-j открывается ман подсвеченной команды.
Если набрать «M-x sort Enter» видим:

Хочется более богатый функционал, как в предыдущем комменте. Чтобы были видны не только команды начинающиеся с «sort-», а вообще все где есть «sort», плюс забинденные к командам кнопки и поиск по описанию и настройкам.

Это поможет постепенно изучать редактор в процессе работы.
Не правильным путем вы идёте, какой смысл изучать отдельные команды. В руководстве всё очень подробно и в правильном (а не случайном) порядке изложено.

Можете использовать «Ctrl-h a», как я описал ниже, там и описание, и кнопки, более детальное описание.
+ если вы вызываете команду по имени, то после вызова Emacs напомнит вам какой комбинацией клавиш можно её вызывать.
Понял что лёгким путём пройти не получится :) Придётся курить ман.
Могу предложить такой вариант:


Это улучшенный выбор команд из пакета helm. Когда ищете команду, не вводите дефис, только отдельные термы, например sort line, тогда будут найдены команды в которых эти термы в т.ч. и посередине, и в конце.

Как видете, хоткеи показываются. Описание вылазит по C-j

Есть задача освоить мощный, быстрый, безглючный консольный редактор

Эту задачу поставил вам начальник, чтоли? )) Как на счет nano? Прекрасный, консольный, текстовый редактор.
юниксоиды посылают курить ман или вообще говорят что этот редактор мне не нужен

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

По командам… Как уже говорили, можно нажать «M-X [имя] TAB» и появится список команд.

Если хочется увидеть миниописание, то жмем «Ctrl-h a [имя] Enter» и появится список найденных команд (нижняя часть окна):



Если кликнуть по команде, то появится более детальное описание (верхняя часть окна).

Если вы начали что-то набирать в командной строке и передумали, то нажмите Ctrl-g.

Если вам мало такого описания команды, то вы можете найти эту команду в руководстве пользователя:



Нажимаете Ctrl-h F и пишите имя команды (автодополнение вызывается с помощью табуляции). При этом вы можете узнать и о аналогичных командах (sort-pages, sort-paragraphs).

Также, как видите, там ещё энное количество способов поиска по документации. Загляните ещё в меню Describe. Ни в одном другом редакторе нет такой детальной документации и такого количества способов поиска по ней.
> А нечёткий поиск есть?
Да, см. Helm или Icicles

> А поиск по описанию команды?
info-apropos

> Или надо тупо вызубрить 100500 команд, а только потом приниматься за редактирование?
Ничего зубрить не надо, выучил команды info, where-is, describe-key и базовые клавиши, и вперёд редактировать текст.
Извините за флуд, но хорошо настроенный Emacs в предварительных ласках не нуждается…
Я только с третьей попытки залез на emacs. Ни о чём не жалею, да и мне он подходит как нельзя лучше: редактировать разное, скрипты, руби, файлы спец. назначения.
Хорошо организованные настройки творят чудеса. Это как и в обычном программе: всё на своих местах, классы разложены по модулям, ресурсы по папочкам, тесты в своём месте и т.д. и т.п.

Конфиги — это тоже код. Правильно организуй и будет тебе счастье (и много разных подходов на любой вкус).

Мне очень сильно помогло вот это: github.com/purcell/emacs.d
Я форкнул и добавил паручку вещей под себя. Вдруг кому пригодится.
Камрады, не кидайтесь тапками, плиз!
Я не пользуюсь Emacs, но много набирал и набираю текста, знаю не понаслышке, как неудобно работать с текстом на стандартной клавиатуре.
Знаю, что при работе в Emacs и подобных редакторах очень устаёт левый мизинец (от нажатия Ctrl), или приходится выворачивать руку и нажимать Ctrl указательным пальцем, к примеру…
Приглашаю людей, не чурающихся нового в группу в Telegram, где создают кастомные, удобные и эргономичные клавиатуры: t.me/klavaorgwork
И да, фото моей клавиатуры прилагаю (это концепт ещё без оформления, поэтому грязный).
DSCN0970_.jpg на ixbt.photo:
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.