Пользователь
0,0
рейтинг
10 января в 07:20

Разработка → Хорошо настроенный Emacs tutorial

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


Emacs [“Editor MACroS”, ​/ˈeditər ˈmakrōs/​​/ˈ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.
Роман Захаров @zahardzhan
карма
28,0
рейтинг 0,0
Пользователь
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • +2
    Ребята, гуру емакса, подскажите, есть ли там штука, типа command palette в sublime text или find action в jetbrains? Просто новичку снаскоку сложный редактор без палитры команд вкурить трудно.
    • 0
      Палитра команд в emacs (vim)? Да вы извращуга сударь!
      • +1
        Не, я чайник. Как разобраться в редакторе, когда я не знаю ни названия команды ни хотки к ней? В других редакторах спасает палитра команд с нечётким поиском.
        • 0
          emacs (vim) от других редакторов отличается как раз-таки тем, что его познают не методом тыка по палитре команд, а методом курения манов (можно паровозиком от гуру).
          • 0
            А в чем проблема сделать его более юзерфрендли?
            • 0
              Зачем? Философия юника требует сначала изучения инструмента, а уже потом его использования. Если вы хотите потыкать по кнопочкам, может вам больше подойдет какой нить современный GUI IDE?
              • –1
                Век тёплых ламповых компов и двадцатитомных манов закончился. Пора потихоньку менять «философию юника».
                • 0
                  Не стоит заблуждаться — конец кругозора — это еще не конец века по меткому выражению Шопенгауэра
                • 0
                  Да ни дай бог. У вас есть эйплы, микрософты и джетбрейны, там меняйте что вам хочется, а философию юника не трогайте! Сначала изучите ее, прежде чем делать предложения и выводы.
                • –1
                  Просто для справки, Emacs был создан в MIT и впоследствии развивался как одна из основных компонент лисп-машин которые создавались в традиции «философии MIT», и «философия UNIX» ко всему этому не имеет абсолютно никакого отношения. Это были другие люди, у них были другие идеалы. См. Ричард Габриэль. Просто не слушайте этого мудака, он вам тут лапши понавешает.
    • +2
      По нажатию M-x (Alt-x) вываливается приглашение вести команду. Название можно ввести частично. Например, на картинке я ввел sort и вижу все команды с этим словом.
      • 0
        Это скорее для тех, кто знает что ищет.
    • 0
      Очень давно не пользовался Емаксом. На сколько я помню, жмёшь Alt+X и можно вводить имя команды. Табуляция для автодополнения и показывает список подходящих по имени команд.
      • +1
        А нечёткий поиск есть? А поиск по описанию команды? Или надо тупо вызубрить 100500 команд, а только потом приниматься за редактирование?
        • +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. И не потому что они лучше, а потому что так сложилось
          • 0
            Но в Emacs основные команды вынесены в меню (создание/открытие/сохранение файла, переключение между буферами (окнами) и т.п.), их не нужно искать.
            Не подскажете где это меню в консольной версии? Ибо возможность запуска в консоли для меня критичное преимущество vim и emacs. Заодно напомните, пожалуйста, есть ли в конце каждого подобного пункта меню текст соответствующей комбинации клавиш, чтоб найдя пару раз пункт меню начать пользоваться этой комбинацией. Насколько я помню его нет (и это единственная подобная программа из тех, что я пользовался).
            Если за эти годы никому не понадобился поиск команды по описанию или регулярному выражению, значит он действительно не нужен.
            Просто те, кому он понадобился, не смогли начать им пользоваться. Например я.
            И как вы представляете себе такой поиск?
            Idea: Ctrl+Shift+A — идеал юзабилити. Возможно изучать хоткеи по мере необходимости.
            Но я думаю, что все люди не переходят на Emacs потому что:
            Ни одно из ваших предположений не выполнилось для меня. Он мне был очень нужен как рабочий инструмент и имидж сложности меня не пугал — я попытался начать им пользоваться. И понял, что это невозможно без хотя бы недели изучения. У меня столько свободного времени не было, пришлось остаться на vim.
            • –3
              Вы зашли здесь невзначай в комментах посрать или у вас есть некая высшая цель? Просто интересно.
              • 0
                В статью я зашел в надежде найти инструкцию по настройке emacs в духе: «сделайте вот так и этим можно начать пользоваться». Во мне периодически просыпается надежда на легкий переход с vim на emacs (хотя теперь больше надежды на neovim).
                Статья оказалась пустышкой (о чем выше вам уже сказали).
                А тут просто ответил Ares_ekb на вопрос про пример нечеткого поиска команды по описанию.
                • –2
                  Это я к тому что вы пишете всякие глупости. В если поискать в моей статье слово «меню» — вы найдете две ссылки на которые можно щелкнуть мышкой и настроить меню по своему усмотрению — и сделать это можно прямо из консоли, и у вас прямо в консоли будет меню и в каждом пункте меню будет текст соответствующей комбинации клавиш.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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



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

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

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



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

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

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

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

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

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

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.