Все что нужно знать для того чтобы быстро и грамотно настроить Emacs.


Emacs [“Editor MACroS”, ?/?edit?r ?makros/? > ?/?emaks/?, далее — «эмакс»] был создан давным давно в Лаборатории искусственного интеллекта Массачусетского технологического института MIT AI Lab. Эмакс это текстовый редактор поведение и возможности которого изменяются прямо во время написания в нем текста на языке программирования на котором написан сам эмакс. Более того, прямо во время написания в эмаксе текста на языке программирования на котором написан сам эмакс изменяется поведение и возможности самого языка программирования на котором написан эмакс. Все это делает эмакс самым гибким и универсальным текстовым редактором в сравнении с любым другим.

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

Универсальность эмакса играет вам на руку, если вы понимаете как он устроен: вы можете делать тысячу разных дел через единый интерфейс в котором все состоит из текста во всех его проявлениях. Возможно, это выглядит архаично с точки зрения представлений о современном пользовательском интерфейсе, но это не так; хотя бы потому что современные интерфейсы не раскрывают силу простого текста в полной мере. Чтобы стать грамотным пользователем эмакса, вам придется понять его концепцию и внутреннее устройство, а это значит — приобщиться к культуре хакеров 70-х годов прошлого века. Новичков такое положение дел пугает, но все не так плохо: эмакс сложен только для сложных задач, а для простых задач он прост, все зависит от ваших потребностей. Начать знакомство с ним лучше с общего обзора “A Guided Tour of Emacs” на сайте свободной операционной системы GNU.

Ричард Столлман описывает историю возникновения эмакса в статье «Мой опыт работы с лиспом и развитие GNU Emacs»; эта история тесно связана с не менее интересной историей проекта GNU из которой можно узнать, что GNU Emacs был первым проектом в проекте GNU. Суть того что из себя представляет эмакс подробно изложена в документе “EMACS: The Extensible, Customizable Display Editor” написанном в 1981 году — и за прошедшие годы эта суть ничуть не изменилась.

Расширяемость эмакса это его благословение и проклятье. Конечно, в стандартной поставке эмакс хорош, но не так хорош как мог бы быть. Вы не ограничены решениями разработчиков, и если вам нужна функциональность которой в эмаксе нет, вы можете добавить ее сами: достаточно просто открыть эмакс и подробно её описать. В конце концов все возможности эмакса по редактированию текста это всего лишь текст описывающий что делать с текстом, и вы можете изменить этот текст в любое время точно так же как и любой другой, тем самым изменив возможности эмакса. Потенциально его возможности безграничны, но чтобы ими воспользоваться придется взяться за настройку, а это подразумевает умение программировать и плотное общение с сообществом.

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

В изучении программирования поможет книга «Структура и интерпретация компьютерных программ» — это вводный курс по информатике в MIT. В деле написания программ для эмакса пригодится учебник «Введение в программирование на Emacs Lisp», справочник “GNU Emacs Lisp Reference Manual”, и брошюра “Common Lisp Quick Reference”.

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

Обычно создание удобной для себя конфигурации и ее последующая доводка растягивается на долгое время. Можно облегчить себе жизнь и установить фреймворк в котором все основные настройки выполнены в соответствии с видением автора фреймворка, и вам даже не придется править исходный код для того чтобы просто пользоваться эмаксом в свое удовольствие. Самые популярные фреймворки на сегодня: Spacemacs, Emacs Prelude, Eschulte Literate Emacs Starter Kit, Overtone Emacs Live, Purcell emacs.d, Oh My Emacs.

Все будет хорошо до тех пор пока вы не захотите встроить в эмакс некую невероятную функциональность которой в выбранном фреймворке нет, и тогда вам придется вручную интегрировать некий код не только в эмакс, но и во фреймворк, а для этого нужно будет разобраться с его внутренним устройством, что сводит все его достоинства на нет. К такому выводу пришел автор Emacs Starter Kit (см. Meet Emacs), когда закрыл свой проект после шести лет развития:
Старые версии Emacs Starter Kit были единой-для-всех кодовой базой заменяющей содержимое директории ~/.emacs.d. Это было очень популярное решение, но большая связка бессвязной функциональности вела к тому, что пользователь просто привыкал к ней ничего не понимая. Когда некоторые вещи ломались или вели себя не так как вам хотелось, вы и понятия не имели где их исправить.

Я понял, что пользователям лучше подходят маленькие пакеты дающие желаемую функциональность. Вместо свалки кода, Emacs Starter Kit сделался небольшим руководством. Как пользователю Emacs, вам предстоит искать новые фрагменты эмакс-лисп-кода, интегрировать их, конфигурировать, и даже писать свои собственные. Emacs Starter Kit поможет вам советами где начать и что именно искать, но сборка годной конфигурации это личное дело каждого.

Система пакетов эмакса это встроенная в него лисп-программа [см. исходник на github; открыть графический интерфейс системы пакетов в эмаксеM-x list-packages] которая автоматически интегрирует в эмакс другие лисп-программы из интернета. Система пакетов работает независимо от операционной системы под которой запущен редактор, она сама отслеживает зависимости между лисп-программами и заботится об их обновлении. Разработку этой ситемы начал Том Тромей в 2007 году, в 2012 она была включена в состав Emacs 24.1; пик популярности Emacs Starter Kit пришелся именно на эти годы, то есть по большому счету сообщество использовало его для разработки системы пакетов.

Как бы там ни было, личная конфигурация эмакса по своей природе была есть и будет просто большой кучей бессвязаного кода, и лучший способ справиться с этим — оставить все как есть; или превратить эту кучу в руководство которое будет объяснять причины (в первую очередь чтобы не забыть самому) по которым тот или иной фрагмент находится в этой куче, а потом сделать так чтобы это руководство само превращало себя в лисп-программу и выполняло конфигурацию эмакса при запуске. А также пересобирало само себя при изменении и скачивало новые версии себя из удаленных источников. Почему бы и нет. Это же руководство для настройки эмакса мышью в лучших традициях Стэнфорда и MIT.

Продолжение.

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

Исходный код статьи: Gitlab, Github.

Комментарии (75)


  1. Ares_ekb
    10.01.2016 08:59
    +10

    Темы про операционные системы становятся популярными :) Вчера статья про U365, сегодня Emacs.


  1. Delphinum
    10.01.2016 14:39

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

    Что мешает решить эту проблему по аналогии с Vim и использовать каталог модулей?


  1. igrishaev
    10.01.2016 18:08
    +2

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

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

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

    Вот это — действительно хорошо настроенный Емакс.


    1. zahardzhan
      10.01.2016 18:49
      -3

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

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

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

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


      1. Delphinum
        10.01.2016 18:52

        Посмотрите как организован мой цикл статей по Vim. Никто не забанил и читать удобно.


        1. zahardzhan
          10.01.2016 19:02
          -2

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

          Ирония. Первый же комментарий под первой статьей: Ждем ответ от поклонников Emacs!


      1. igrishaev
        10.01.2016 19:06
        +5

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

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


        1. zahardzhan
          10.01.2016 19:27
          -1

          Вы не понимаете? Либо статья опубликована плохо либо не опубликована вовсе. Ваши слова не имеют под собой ни основания ни смысла. Вот исходный вариант который похерили модераторы gitlab.com/zahardzhan/well-tuned-emacs/blob/c0b81847f55afb2d1b7718bf971ff476125cf8f3/README.org. Это не ссылка на блог. Эта ссылка на статью в удобочитаемом виде в репозитории. Система публикации проектной документации гитхаба привязана к «блогу» автора проекта, сам же гитхаб вменяемо отрендерить хардкорный документ в формате org не может. Насчет же произношения — ни я ни вы не обладаем авторитетом известного произносителя заграничных слов по русски Артемия Лебедева чтобы указывать друг другу что и как произносить.


          1. igrishaev
            10.01.2016 19:43
            +3

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


            1. zahardzhan
              10.01.2016 20:02

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


              1. Delphinum
                10.01.2016 20:06
                +2

                Чет вы загнули, интерактивная статья, тыры пыры. Сейчас это статья, которая называется по одному, а содержит совсем другое. Вы либо переименуйте ее в «Введение в среду настройки emacs», либо добавьте в нее информацию о том, как хорошо настроить emacs. Пока в статье 90% истории и 10% ссылок. Мне самому нужно из ваших ссылок находить и читать инфу?


                1. zahardzhan
                  10.01.2016 20:10
                  -6

                  Нет, надо маму позвать пусть она тебе на ночь почитает.


                  1. Delphinum
                    10.01.2016 20:14
                    +1

                    Оуу… Понятно. Ну удачи в поисках комьюнити )


                    1. zahardzhan
                      10.01.2016 20:23
                      -7

                      Зачем читать статьи про Emacs, если тебе блокнота — за глаза?


              1. igrishaev
                10.01.2016 20:18

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


                1. zahardzhan
                  10.01.2016 20:40
                  -4

                  Пять лет назад я написал статью про Emacs Starter Kit, и эта статья была объективно говном — как по форме, так и по содержанию. И она получила высокую оценку здесь. Недавно я подумал — почему бы не отпидорасить эту статью до такой степени чтобы она была настолько хороша в качестве статьи про настройку Emacs насколько это вообще возможно. И я это сделал. И опубликовал здесь насколько это позволено модераторами. И знаете что? Я ее лучше удалю отсюда чем адаптирую. Потому что мне например очевидно, что те кому нужна «адаптация» — это не те для кого это написано.


                  1. Delphinum
                    10.01.2016 21:00
                    -1

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


                    1. zahardzhan
                      10.01.2016 21:05
                      -5

                      А не пойти бы вам нах#$ пожалуйста.


                      1. Delphinum
                        10.01.2016 21:09
                        -1

                        Тише, тише. Вам срочно нужно кое что остудить ))


                        1. zahardzhan
                          10.01.2016 21:26
                          +2

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


                          1. Delphinum
                            10.01.2016 21:30
                            -1

                            Я вам не дружище (к моему счастью ограждаю себя от подобных людей).


                            1. zahardzhan
                              10.01.2016 21:36
                              +2

                              Само собой. Взаимно. Я обращаюсь к вам «дружище» потому что выражаю этим легкую степень неуважения, а не потому что вы мой «дружище».


                    1. zahardzhan
                      10.01.2016 21:08
                      +2

                      С другой стороны очень странно читать подобное от автора статьи «Пользовательская документация и GitHub». Очень странно.


                    1. zahardzhan
                      10.01.2016 21:13
                      +1

                      Сталкивались ли вы когда нибудь с долгим поиском документации к используемой библиотеке или пакету? Я считаю странным, что исходный код не распространяется с пользовательской документацией. Ведь она такая же важная часть кода, как тесты или зависимости. Без хорошей пользовательской документации мы можем «убить» уйму времени на анализ кода и комментариев. Так почему бы не хранить пользовательскую документацию вместе с исходными кодами программы? Речь не о DocBlock и генерацию документации по API проекта, я говорю именно о пользовательской документации, которую мы так любим за последовательное повествование и множество примеров.

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

                      Удивительно что те кто подобное предлагает не в состоянии подобное оценить.


                  1. ffriend
                    10.01.2016 21:05

                    А для кого это, собственно, написано?


                    1. zahardzhan
                      10.01.2016 21:06
                      +1

                      … или превратить эту кучу в руководство которое будет объяснять причины (в первую очередь чтобы не забыть самому) по которым тот или иной фрагмент находится в этой куче…


                      1. ffriend
                        10.01.2016 21:09

                        Т.е. основной посыл всё-таки в репозитории по ссылке, верно?


                    1. Delphinum
                      10.01.2016 21:08

                      Для высшего разума, очевидно же )


                  1. imwode
                    11.01.2016 00:47

                    от3.14**л до такой степени, что она настолько хороша? Серьезно?
                    В первом же абзаце:

                    макс это текстовый редактор поведение и возможности которого изменяются прямо во время написания в нем текста на языке программирования на котором написан сам эмакс. Более того, прямо во время написания в эмаксе текста на языке программирования на котором написан сам эмакс изменяется поведение и возможности самого языка программирования на котором написан эмакс.


                    1. zahardzhan
                      11.01.2016 01:11
                      +1

                      Ну и?


    1. dunmaksim
      17.01.2016 18:08

      Я правильно понял, что anaconda-mode >> jedi.el? Сам пользуюсь первой, а Jedi так и не осилил — постоянные проблемы. Кстати, у Вас вся конфигурация в одном файле? Почему не разбиваете на части?
      Отдельное спасибо за alias'ы — взял на заметку.


      1. igrishaev
        17.01.2016 22:46

        Я еще не разобрался, что для питона лучше. Jedi запускается как сервер и работает сразу с несколькими окружениями одновременно. Из-за этого есть риск прыгнуть не в ту Джангу, например, это один раз меня подвело. Но автокомлит у нее лучше. Анаконда проще наcтраивается и позволяет переключать окружение по требованию. Я переключаюсь модулем virtualenvwrapper. Конфигурация не такая большая, чтобы разбивать.


  1. olegkrasnov
    10.01.2016 18:46
    +2

    Ребята, гуру емакса, подскажите, есть ли там штука, типа command palette в sublime text или find action в jetbrains? Просто новичку снаскоку сложный редактор без палитры команд вкурить трудно.


    1. Delphinum
      10.01.2016 18:49

      Палитра команд в emacs (vim)? Да вы извращуга сударь!


      1. olegkrasnov
        10.01.2016 18:52
        +1

        Не, я чайник. Как разобраться в редакторе, когда я не знаю ни названия команды ни хотки к ней? В других редакторах спасает палитра команд с нечётким поиском.


        1. Delphinum
          10.01.2016 18:53

          emacs (vim) от других редакторов отличается как раз-таки тем, что его познают не методом тыка по палитре команд, а методом курения манов (можно паровозиком от гуру).


          1. olegkrasnov
            10.01.2016 23:10

            А в чем проблема сделать его более юзерфрендли?


            1. Delphinum
              11.01.2016 01:44

              Зачем? Философия юника требует сначала изучения инструмента, а уже потом его использования. Если вы хотите потыкать по кнопочкам, может вам больше подойдет какой нить современный GUI IDE?


              1. olegkrasnov
                11.01.2016 05:45
                -1

                Век тёплых ламповых компов и двадцатитомных манов закончился. Пора потихоньку менять «философию юника».


                1. Rigidus
                  11.01.2016 09:07

                  Не стоит заблуждаться — конец кругозора — это еще не конец века по меткому выражению Шопенгауэра


                1. Delphinum
                  11.01.2016 15:57

                  Да ни дай бог. У вас есть эйплы, микрософты и джетбрейны, там меняйте что вам хочется, а философию юника не трогайте! Сначала изучите ее, прежде чем делать предложения и выводы.


                1. zahardzhan
                  11.01.2016 18:41
                  -1

                  Просто для справки, Emacs был создан в MIT и впоследствии развивался как одна из основных компонент лисп-машин которые создавались в традиции «философии MIT», и «философия UNIX» ко всему этому не имеет абсолютно никакого отношения. Это были другие люди, у них были другие идеалы. См. Ричард Габриэль. Просто не слушайте этого мудака, он вам тут лапши понавешает.


    1. igrishaev
      10.01.2016 18:54
      +2

      По нажатию M-x (Alt-x) вываливается приглашение вести команду. Название можно ввести частично. Например, на картинке я ввел sort и вижу все команды с этим словом.


      1. Delphinum
        10.01.2016 18:55

        Это скорее для тех, кто знает что ищет.


    1. Ares_ekb
      10.01.2016 18:56

      Очень давно не пользовался Емаксом. На сколько я помню, жмёшь Alt+X и можно вводить имя команды. Табуляция для автодополнения и показывает список подходящих по имени команд.


      1. olegkrasnov
        10.01.2016 23:09
        +1

        А нечёткий поиск есть? А поиск по описанию команды? Или надо тупо вызубрить 100500 команд, а только потом приниматься за редактирование?


        1. Ares_ekb
          11.01.2016 08:49
          +1

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


          1. senia
            11.01.2016 10:20

            Но в Emacs основные команды вынесены в меню (создание/открытие/сохранение файла, переключение между буферами (окнами) и т.п.), их не нужно искать.
            Не подскажете где это меню в консольной версии? Ибо возможность запуска в консоли для меня критичное преимущество vim и emacs. Заодно напомните, пожалуйста, есть ли в конце каждого подобного пункта меню текст соответствующей комбинации клавиш, чтоб найдя пару раз пункт меню начать пользоваться этой комбинацией. Насколько я помню его нет (и это единственная подобная программа из тех, что я пользовался).
            Если за эти годы никому не понадобился поиск команды по описанию или регулярному выражению, значит он действительно не нужен.
            Просто те, кому он понадобился, не смогли начать им пользоваться. Например я.
            И как вы представляете себе такой поиск?
            Idea: Ctrl+Shift+A — идеал юзабилити. Возможно изучать хоткеи по мере необходимости.
            Но я думаю, что все люди не переходят на Emacs потому что:
            Ни одно из ваших предположений не выполнилось для меня. Он мне был очень нужен как рабочий инструмент и имидж сложности меня не пугал — я попытался начать им пользоваться. И понял, что это невозможно без хотя бы недели изучения. У меня столько свободного времени не было, пришлось остаться на vim.


            1. zahardzhan
              11.01.2016 10:30
              -3

              Вы зашли здесь невзначай в комментах посрать или у вас есть некая высшая цель? Просто интересно.


              1. senia
                11.01.2016 11:51

                В статью я зашел в надежде найти инструкцию по настройке emacs в духе: «сделайте вот так и этим можно начать пользоваться». Во мне периодически просыпается надежда на легкий переход с vim на emacs (хотя теперь больше надежды на neovim).
                Статья оказалась пустышкой (о чем выше вам уже сказали).
                А тут просто ответил Ares_ekb на вопрос про пример нечеткого поиска команды по описанию.


                1. zahardzhan
                  11.01.2016 19:06
                  -2

                  Это я к тому что вы пишете всякие глупости. В если поискать в моей статье слово «меню» — вы найдете две ссылки на которые можно щелкнуть мышкой и настроить меню по своему усмотрению — и сделать это можно прямо из консоли, и у вас прямо в консоли будет меню и в каждом пункте меню будет текст соответствующей комбинации клавиш.

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


              1. senia
                11.01.2016 12:00

                Ожидал увидеть вот такую статью: habrahabr.ru/post/94256
                Спасибо вам за нее. Надо попробовать.


                1. zahardzhan
                  11.01.2016 19:10

                  Во всех отношениях та статья реализована чудовищно. Проект давно мертв. Не рекомендую. У местных посетителей превратное чувство вкуса в технических аспектах.


            1. Ares_ekb
              11.01.2016 11:01

              Я почти не пользовался консольной версией. Зачем она вам? Файлы можно редактировать через SSH. Зачем запускать Emacs в консоли?

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

              У меня была точно такая же ситуация с Vim, как у вас с Emacs. Я потыкался в Vim, почитал документацию, но понял, что не смогу этим пользоваться.


              1. senia
                11.01.2016 11:44

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

                Ну а про консоль: я пользуюсь консолью постоянно. Мне не нужно чтоб на каждый чих (вроде git commit) выскакивало новое оно редактора. Тем более, что не всегда у меня запущены иксы (на тот момент мне это было актуально).


                1. Ares_ekb
                  11.01.2016 11:59
                  +1

                  Запустил в консоли, вот, меню:


                  1. senia
                    11.01.2016 12:04

                    Действительно, по умолчанию оно есть и открывается по F10. Как-то я его пропустил, когда пробовал emacs. Может взял чужой конфиг с отключенным меню.
                    Спасибо.


              1. igrishaev
                11.01.2016 15:48

                > Зачем она вам?
                Я заметил, что гуевая версия падает чаще (где-то раз в неделю). Консольная — никогда. Но это зависит от ОС и версии, конечно.
                Еще консольную версию можно накатить в виртуалке и спокойно работать.


          1. Delphinum
            11.01.2016 16:00
            +2

            Ну в Vim тоже есть меню, только встает вопрос — зачем ставить emacs/vim, если планируется работать в них мышкой? Ради хвастовства перед коллегами?


        1. kuznetsovin
          11.01.2016 08:55

          А зачем вам Emacs вообще? Из ваших комментариев я вижу что Emacs вам не нужен. Т. к. человек которому он нужен/интересен берет и использует его без лишних вопросов. Кому-то подходит Emacs (куча плагинов под любые нужны), кому-то Sublime (тоже много плагинов, но такого многообразия как в emacs нет).


          1. Ares_ekb
            11.01.2016 09:35
            +1

            Кстати, да, у меня, например, были такие причины пользоваться Emacs
            1) интерес к лисп
            2) возможность редактировать файлы через SSH
            3) фичи, которых нет в других редакторах (например, сортировка строк или регулярные выражения, которые не поддерживаются из коробки в Far или блокноте)
            4) желание пользоваться бесплатным ПО, а не крякнутым
            5) я раньше активно пользовался линуксом, а для него это один из самых адекватных редакторов
            6) стремление к изучению чего-то нового
            7) им просто приятно пользоваться, по сравнению с другими редакторами он практически не потребляет память, очень быстро работает. По сравнению с современными глюкалами, которые сделаны тяп-ляп, Emacs — просто воплощение безглючности и оптимальности во всём

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

            Добавить в этот список ещё Far — и в общем-то это всё чем я обычно пользуюсь. А, ведь, все эти программы может заменить один Emacs! К слову, в нём и психолог есть, с которым можно обсудить жизненные ситуации, и игры.


          1. senia
            11.01.2016 10:27

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


            1. Cheater
              11.01.2016 19:04
              +1

              > Мне нужен был мощный консольный редактор. Я пользовался vim
              > нельзя просто так взять и начать пользоваться emacs без недели изучения

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

              Кстати, в Emacs есть режим эмуляции Vim под названием evil-mode, подходит не только свитчерам с vi/vim, но и просто кому угодно для заимствования от Vim скорости редактирования.


          1. olegkrasnov
            11.01.2016 15:48
            +1

            Есть задача освоить мощный, быстрый, безглючный консольный редактор. Хочется изучать его в процессе работы. Без лишних вопросов изучать не получается. Очень специфичный интерфейс.

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

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

            Но вместо того, чтобы подсказать как найти аналогичный функционал в имаксе, добрые и отзывчивые юниксоиды посылают курить ман или вообще говорят что этот редактор мне не нужен. Зачем такой снобизм?


            1. igrishaev
              11.01.2016 15:50
              +1

              Так чем вам M-x не подошел? У всех команд нормальные имена. По C-j открывается ман подсвеченной команды.


              1. olegkrasnov
                11.01.2016 16:13
                +1

                Если набрать «M-x sort Enter» видим:

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

                Это поможет постепенно изучать редактор в процессе работы.


                1. Ares_ekb
                  11.01.2016 16:27

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

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


                  1. olegkrasnov
                    11.01.2016 16:43

                    Понял что лёгким путём пройти не получится :) Придётся курить ман.


                1. igrishaev
                  11.01.2016 16:52
                  +1

                  Могу предложить такой вариант:


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

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


            1. Delphinum
              11.01.2016 16:05
              +1

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

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

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


            1. Ares_ekb
              11.01.2016 16:20
              +1

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

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

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



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

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

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



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

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


        1. Cheater
          11.01.2016 18:10
          +2

          > А нечёткий поиск есть?
          Да, см. Helm или Icicles

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

          > Или надо тупо вызубрить 100500 команд, а только потом приниматься за редактирование?
          Ничего зубрить не надо, выучил команды info, where-is, describe-key и базовые клавиши, и вперёд редактировать текст.


          1. olegkrasnov
            11.01.2016 18:42

            Спасибо.


  1. ababo
    11.01.2016 16:32

    Извините за флуд, но хорошо настроенный Emacs в предварительных ласках не нуждается…


  1. jsirex
    11.01.2016 20:01

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

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

    Мне очень сильно помогло вот это: github.com/purcell/emacs.d
    Я форкнул и добавил паручку вещей под себя. Вдруг кому пригодится.